jQuery 1.7选择器错误

raf*_*.js 6 ajax jquery

这是我的第一个问题.

我正在使用jQuery开发一个完全Ajax系统,它在1.6.2下工作正常.当我尝试将其升级到1.7时,这段代码停止正常工作:

$("a[class!='']").live("click",function(e){
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)

在1.6.2中,如果它们有一个类,它会阻止所有超链接标记作为链接工作,但在1.7中,它阻止所有链接作为真实链接工作,即使是那些没有类的链接.

小提琴:http://jsfiddle.net/hBehg/

Fel*_*ing 6

使用$('a[class]'),这将选择具有class属性的所有元素.正如我在评论中所说,如果元素甚至没有class属性,则检查空值可能不起作用.

更新:正如@Sidnicious所指出的,文档描述了这个选择器也将选择那些没有该属性的元素.如果它不是1.6,那么它实际上肯定是该版本中的一个错误,或者他们改变了描述而没有提到它.

当然,如果你确实有一个空class属性,即<a class="">这不起作用.

DEMO

更新2:正如@lonesomeday在评论中提到的那样,$('a[class][class!=""]')确实可以按预期工作$(a[class!=""]).

正如其他人所说,你可以改成onjQuery 1.7,它统一了事件处理方法,但它不能解决你的特定问题.

  • +1,这肯定是最好的方法.然而,似乎还不清楚OP报告的行为是否是jQuery中的错误(如果是这样,哪个版本*错误*). (2认同)