jQuery.is
在设置过滤器(如:last
. 关键是它通常.filter
在当前集合上使用并检查过滤后是否有任何元素。
这适用于以下情况:
$("<a></a><b></b>").is("b"); // true, there is a <b> after filtering
但是对于:last
这个失败,因为这样的过滤器是相对于集合的。考虑一个包含两个元素的文档:
$("a:first").is("a:last"); // would be true if the same method was used,
// because in the set with the first <a> element,
// the last <a> element is that element. So filtering
// with `a:last` yields something, and `.is` gets you
// true.
这与您的预期相反。因此,jQuery 改为a:last
在当前上下文中搜索并检查a:first
该集合中是否明显。
您的问题是$(ev.target)
(in handleKeyDown
) 使上下文成为输入元素而不是文档(这是通常的情况)。在这种情况下找不到Notr.items
并且你得到false
. 这可以说是 jQuery 中的一个错误。
无论如何,你可以做的是检查一个集合。反正使用相应的函数会更快一些:
$row.is( $("tr.items").last() ); // true