由于jQuery 2.1中使用:last过滤器的结果发生变化(从1.8迁移),我们的代码中遇到了一个错误
如果我们将其更改为使用.last(),它就像以前一样工作。 我知道这些应该返回相同的东西,尽管方式略有不同。 这是一个错误还是可以解释?
这里有一些示例HTML
<div id="root">
<span class="k-in k-state-selected k-state-focused">
<img class="k-image" alt="test" src="">test</span>
</div>
一些jQuery:last vs .last()返回不同的结果:
var lastFilter = $('#root').find('> .k-in').contents(':last')
var lastFunction = $('#root').find('> .k-in').contents().last()
console.log('lasterFilter=', lastFilter);
console.log('lastFunction=', lastFunction);
在浏览器中显示控制台并运行此小提琴以查看不同的返回值。
答案 0 :(得分:1)
last
选择器(jQuery选择器引擎)仅适用于元素,我认为元素是一个节点,具有nodeType
3 $('#root').find('> .k-in').contents().last()
返回集合中的最后一个元素,该元素由contents
创建,它返回匹配元素集,包括文本和注释节点。在你的情况下,文字是最后一个:<div id="root"> <span class="k-in k-state-selected k-state-focused"> <img class="k-image" alt="test" src=""/> test </span> </div>
所以这不是一个错误,它是一个特征:)