:last和.last don';t返回与jQuery 2.1相同的内容
由于使用jQuery2.1(从1.8迁移)中的:last过滤器的结果发生了变化,我们的代码中遇到了一个bug 如果我们将其更改为use.last(),它的工作方式与以前相同。 我明白这些应该返回相同的东西,尽管方式略有不同。 这是一个bug还是可以解释的 下面是一些示例HTML:last和.last don';t返回与jQuery 2.1相同的内容,jquery,Jquery,由于使用jQuery2.1(从1.8迁移)中的:last过滤器的结果发生了变化,我们的代码中遇到了一个bug 如果我们将其更改为use.last(),它的工作方式与以前相同。 我明白这些应该返回相同的东西,尽管方式略有不同。 这是一个bug还是可以解释的 下面是一些示例HTML <div id="root"> <span class="k-in k-state-selected k-state-focused"> <img class="k-image" a
<div id="root">
<span class="k-in k-state-selected k-state-focused">
<img class="k-image" alt="test" src="">test</span>
</div>
在浏览器中显示控制台并运行此小提琴以查看不同的返回值
last
选择器仅适用于元素,我认为元素是一个节点,它具有nodeType
3$('#root').find('>.k-in').contents().last()
返回集合中的最后一个元素,该集合是由contents
创建的,它返回一组匹配的元素,包括文本和注释节点。在您的情况下,文本是最后一个:
测试
所以这不是一个bug,它是一个特性:)是否
.contents()
仍然接受任何争论?请参阅。这可能是因为last
选择器仅应用于nodeType
为1
@j809的节点,我没有检查,这可能是因为-我没有收到迁移警告(使用migrator)对,我必须确认,因为这一定已经更改了。因为如果您将jQuery库设置为1.8.3,在上面的Fiddle页面上,它们都返回完全相同的内容-即只返回文本。那么,问题是它是“更正”了jQuery2.1(在1.8.3之后)还是可以被认为是一个bug?谢谢,尽管我需要一个确认的来源,比如一些bug报告讨论,才能真正确信它是一个更正
var lastFilter = $('#root').find('> .k-in').contents(':last')
var lastFunction = $('#root').find('> .k-in').contents().last()
console.log('lasterFilter=', lastFilter);
console.log('lastFunction=', lastFunction);
<div id="root">
<span class="k-in k-state-selected k-state-focused">
<img class="k-image" alt="test" src=""/>
test
</span>
</div>