[译] jQuery 发布 3.0 beta版本

时隔 3 个月,jQuery 团队终于发布了 3.0 Alpha 版本。有两个版本 jQuery compat 3.0jQuery 3.0

  • jQuery compat 3.0 对应之前的 1.x, 兼容更多的浏览器,对于IE支持到 8.0 版本
  • jQuery 3.0 对应之前的 2.x,关注更新的浏览器,对于IE支持到 9.0 版本

此外, 3.0还增加了对 Yandex 浏览器的支持,一款来自俄罗斯的浏览器。

主要的变化

.show().hide() 方法的变动

<style type="text/css">
       input {
              display: none;
        }
 </style>
<script>
    // 不会生效,因为`.show()` 和 `.hide()` 方法仅仅读取内联样式
    $('input').show();
</script>

每个人的内心都认为jQuery中的.hide()方法是(在CSS中)被用来设置display:none。相反的,.show()方法是用来清除display因此这个元素就可以重新出现(假定元素的父类元素没有被隐藏)。这是正确吗?

不。这些年来,实际上存在很多复杂且特殊的例子,很多人希望我们可以修正一下,这些例子使得这些方法陷入复杂的原理集合之中。例如,如果一个元素在样式中设置成display:none将会怎样?jQuery试着直接在元素上强制添加display:block来覆盖以前的display属性。好的,如果一个类似 <li>
的普通块级元素通过不同的样式规则被设置成display:inline将会怎样?在一个元素被添加到document中操作之前你调用这些方法以及我们不知道这个元素所含有的display值的例子中会怎样?确定这些事例都要花费额外的工作。这仅仅只是一个猜想被证明是错误的。

既然这些方法可以向一个元素添加style属性,然而这些在响应式设计(元素的可见性可能需要通过媒体查询来设置)中不是常常表现的很好。这个导致jQuery处理器需要具有监听orientationchange或者resize事件以及人工隐藏或者显示部分页面的能力.

你可以看到jQuery只是完成了疯狂旅程上的一半路程,jQuery完成整个旅程是说不通的。这个事例以及检查不仅复杂且难以完成,而且在大的页面中会造成具有重大意义的性能事件。

所以,代替的是,我们正在实验性的反抗这些方法的演变,然后回归简单的、原生的模型。这个将会分解一些代码。如果你需要在元素的样式中设置成display:none,这个.show()方法不在覆盖display属性。因此加入到jQuery 3.0中最重要的规则:不要使用样式来设置display:none的默认值,然后尝试使用.show()-或者其它任何方法来显示元素,例如.slideDown()以及.fadeIn()-来使得该元素可见。

如果你需要一个元素的默认状态是隐藏的,最好的途径是:给元素增加一个类似"hidden"的样式名,然后去定义该样式名中的样式属性display: none。然后可以通过使用jQuery中的.addClass()方法以及.removeClass()方法分别增加和移除样式来控制可见性。另外一种做法是,在元素呈现在页面上之前,你可以使用ready处理器,然后在.ready()中调用.hide()方法。或这如果你一定要获取样式默认值,你可以使用.css("display","block")(或者合适的display值)来覆盖样式。

我们知道这可能是jQuery 3.0中最受争议和最困难的改变,所以我们想把这个改变放在早期的发布版本中看所带来的影响。请让我们知道这些改变如何影响你的代码以及你希望为了更好的使用新的版本所要做出的改变。

.data()方法的变动

我们更新我们的.data()方法实现来更有效的匹配 HTML5 dataset specification 。所有的键名都是从kebab-case转换到驼峰式命名法,不管访问的方法以及数字不在参与转换。例如,我们不在区分"foo-bar"和"fooBar",但是区分"foo-42"和"foo42"。当通过调用无参数的.data()来重新获取所有的数据或者试着通过转换的键名(.data("foo42))而不是原始的(.data("foo-42"))这些变化开始起作用。

<div data-foo-42="bar" data-foo-bar="bar"></div>
 
<script>
  console.log($('div').data());
 // {fooBar: "bar", foo-42: "bar"}
</script>

主要是$.camelCase 方法发生变动,里面的匹配连字符正则 变成了rdashAlpha = /-([a-z])/g,,以前是 rdashAlpha = /-([\da-z])/gi

jQuery.Deferred 兼容Promise/A+ 以及 ES2005

为deferred对象增加了.catch()方法作为.then(null, function rejcted)的语法糖

$.ajax 对象删除了 success | error | complete 方法

这是因为 Promise/A 规范的推动,大家对 Promise 的使用越来越多,之前对应 Derferred 上的几个方法没有存在的必要了

$.ajax().success()
$.ajax().error()
$.ajax().complete()

** 对于$.ajax回调函数中的success、error、complete方法没有进行改动 **

错误事例不会默默地失败

也许在一个重要的时刻你在想,"窗口的偏移量是什么?"然后你可能就意识到这是个疯狂的问题-窗口怎么会有偏移量?

在过去,jQuery有时候试着创建类似返回something的事例而不是抛出异常。在这个询问窗口的偏移量的特殊事例,到现在为止,答案已经变成{top:0,left:0},由于jQuery 3.0 alpha版本,我们正在对抛出错误以便于疯狂的请求不能被安静的忽略的想法进行实验。

width/height,css(width) / css(height) 的返回值一律是十进制

之前部分浏览器特殊情况下返回浮点数。

移除了注册事件的快捷函数 load | unload | error

.load(), .unload(), .error() 事件的快捷注册方法在新版本中彻底移除,请使用.on方法进行绑定

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,281评论 0 44
  • 第一章 jQuery简介 1-1 jQuery简介 1.简介 2.优势 3.特性与工具方法 1-2 环境搭建 进入...
    mo默22阅读 1,542评论 0 11
  • jQuery基础(一)——样式篇 1-2环境搭建 1-3 jQuery HelloWorld体验 $(docume...
    croyance0601阅读 1,048评论 0 8
  • 性能数据了解 分析移动端H5性能数据,首先我们说说是哪些性能数据。白屏时间,白屏时间无论安卓还是iOS在加载网...
    留不住的青春_阅读 3,697评论 7 13