在IE 7中使用Firebug Lite,使用jQuery 1.4.4。我试图抓住所有不是第一个的“.step”<div/>
元素(现在有2个或3个,但假设有任意数量的步骤)。在FF和Webkit中工作,但注意到:not
与:first
相同的选择器不会在IE7中选择相同的项目。 jQuery bug?这有用吗?你能建议另一种选择这些项目的方法吗?
# Firebug Lite console
>>> $('.step')
[div#step_1.step, div#step_2.step, div#step_3.step]
>>> $('.step:first')
[div#step_1.step]
>>> $('.step:not(:first)')
[div#step_1.step, div#step_2.step, div#step_3.step]
答案 0 :(得分:3)
这不是IE7问题的答案,但它是一种解决方法,可能是更好的整体方法。
而不是:
$('.step:not(:first)')
这样做:
$('.step').slice(1);
现在你正在使用一个对querySelectorAll
有效的简单选择器,只是简单地将其削减到除第一场比赛之外的所有选择。
总的来说,它应该对你有好处。
修改强>
在IE 7中似乎存在关于:not(:first)
的开放式错误。
答案 1 :(得分:0)
您可以使用
$('.step:gt(0)')
目前没有IE7方便测试
答案 2 :(得分:0)
为了便于阅读,建议使用.not()方法而不是jQuery documentation中的非伪类选择器,但是:不会产生可怕的性能影响。在许多情况下,省略标记名也可以。在IE8中进行测试,我发现.not()方法比:非伪类选择器快三十四倍。
我同意user113716的说法.slice方法在这里可能是最好的,但对于那些遇到问题的人:不是在类似的情况下,我会建议这样的事情:
$('div.step').not('div:first')