jQuery 1.3提供了很多新特性,不少同学也纷纷更新到了jQuery 1.3,也有同学升级后发现有些功能失效了。这里就简单写一下jQuery 1.3的升级指南。如果这里没有提到的而你却遇到了并且解决了,欢迎留言告诉更多人。如果没,所好能写个简单测试样例以说明问题。
这里不涉及任何新增特性,只有关于修改过的内容。要看新增特性,请参考这里
翻译了通篇文档,主要发现以下几点容易导致升级失败:
1,取消了属性选择器的@前导符号。这点会造成升级失败。虽然这个@符号在jQuery 1.2中已经不推荐使用了,但由于种种历史原因还是有很多人用。修复这个问题的方法很简单,只需要简单删除那个@符号即可。
2,trigger()方法触发的事件会冒泡了。这点可能在某些重要的功能上发生偏差。尤其是一些大项目上。要解决这个问题,需要在事件处理函数里加上e.stopPropagation() 或者函数返回false即可。
3,这点实际上并没有在发布信息中提到,但却也是很重要的问题。[attribute!=value]这个属性选择器在jQuery 1.3之前是这样的:”匹配那些没有指定的属性的元素,或者指定的属性不等于特定值的元素。”,这等价于:not([attr=value])。而在jQuery 1.3中是这样的:匹配所有含有指定的属性,但属性不等于特定值的元素。
这个改动是为了符合w3c的标准。虽然有点绕……
要解决这个问题,上面也已经提到了,有选择得使用:not([attr=value])代替即可。(但目前这个似乎在ie下有bug,依然跟以前的表现一样,ff和chrome下符合这个描述)
1.3.1中又改回来了……[attribute!=value]依然等价于:not([attr=value])。如果要找含有特定属性且不等于指定值的请继续使用[attr]:not([attr= value])
更多的问题尚未发现,如果各位同学遇到了请不要吝惜提出来~谢谢。
trigger返回false的用法能给个实例吗?
可以参考文档中的bind部分
你好,首先感谢您最 jquery 中文做出的努力工作.
我使用 jquery 也不是太长的时间,最近更换1.3时发现了一些版本兼容问题(由于js写的比较庞大具体哪里我也没找到,反正就是更换1.3后之前的功能无效了…)以及在处理 XML 文件的速度变得很慢很慢,不知道你遇到过没有.
@icyleaf, 虽然我没有遇到你说的那个问题,不过如果你可以写出测试案例来提交给开发人员那是再好不过的了。另外,可以不用急着升级,等1.3.2或者1.3.3以后再说吧。毕竟里边没有什么非用不可的功能啊。
主要是很讨厌在HTML代码中插入 事件代码,想用1.3的 live重新修改一下页面代码,呵呵(^__________^)
为了1.2.6不支持另配一个 livequery 插件或自己多谢那么多的判断又感觉不值而已。
期待新版本的发布,希望可以修复一些bugs。
@icyleaf, 如果不喜欢插入事件代码(确实不应该在HTML混入JS行为),建议用事件冒泡来处理,我之前写过类似的文章,你可以翻翻,其中有个方案二。1.3中的live就是用了那个方法。
不错的东东,我要去升级下!!
听说效率高了很多?
1.3.1的属性选择器好像有点问题,还是方式有所改变?
name属性不起作用了。
比如$(‘div[name=”321″]’).html()就取不到内容,放到1.2.6版本中正常。
请问有谁知道这个问题是怎么回事吗?谢谢。
@name attribute, 方式是改过了,我没测试过这种情况,但可以简单的去掉里边的引号来解决问题,如果实在觉得很困扰,可以去官网提交BUG,如果觉得有困难,我也可以帮你来提交BUG
去掉引号一样的不行:
$(‘div[name=321]’).html()
这样也取不到内容。
1.3.1 的domManip方法改过了么?我原先用的layout等插件都报错了,谁能告诉我这大概是什么方面的问题?
内部方法可能改过了,如果你用了插件,可以去看看相关的插件有没有升级版本。