jQueryは、の.is
ようなフィルターを設定する場合に、異なるフィルターメカニズムを実行し:last
ます。重要なのは、通常は.filter
現在のセットで使用し、フィルタリング後に要素が残っているかどうかをチェックすることです。
これは、次のような場合に機能します。
$("<a></a><b></b>").is("b"); // true, there is a <b> after filtering
しかし、:last
このようなフィルターはセットに相対的であるため、これは失敗します。2つの要素を持つドキュメントを考えてみましょう。
$("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