jQuery:not()问题

jQuery:not()问题,jquery,selector,Jquery,Selector,jQuery 1.4: $('#menu li:last:not(.ignore)').addClass('last'); HTML: 项目1 项目2 第3项 最后一个类不应用于项目2。我做错了什么 谢谢更改:last和:not()的顺序: 表达式的工作方式如下: 查找ID为“menu”的元素 查找该元素的所有子体列表项 将结果限制到该集合中的最后一个元素 过滤掉没有“忽略”类的元素(此时只有一个元素,最后一个) 最后一个元素有一个ignore类,因此它被过滤掉。这就是它不起作用的

jQuery 1.4:

$('#menu li:last:not(.ignore)').addClass('last');
HTML:


  • 项目1
  • 项目2
  • 第3项
<代码>最后一个类不应用于
项目2
。我做错了什么


谢谢

更改
:last
:not()的顺序


表达式的工作方式如下:

  • 查找ID为“menu”的元素
  • 查找该元素的所有子体列表项
  • 将结果限制到该集合中的最后一个元素
  • 过滤掉没有“忽略”类的元素(此时只有一个元素,最后一个)
最后一个元素有一个ignore类,因此它被过滤掉。这就是它不起作用的原因。颠倒顺序:

$("#menu li:not(.ignore):last").addClass("last");

至少对我来说,说“在第一次出现.ignore之前给我列表项”似乎更符合逻辑:


啊!!我否定了这个想法,因为:last:没有在更早的时候工作过,但我想不是在jQuery1.4中。无论如何谢谢!!:)@Nimbuz:选择器
:not(…):last
:last:not(…)
具有不同的语义。前者将首先排除与
:not(…)
表达式不匹配的所有元素,然后获取其中的最后一个元素。后者将首先获取最后一个元素,如果它与
:not(…)
条件不匹配,则将其排除。
$('#menu li:not(.ignore):last')
$("#menu li:not(.ignore):last").addClass("last");
// tested
$("#menu li.ignore:first").prev("li").addClass('last');