3
$(".item").each (i, elt) ->
    $(elt).attr("href")
    # ...

jquery$(elt)オブジェクトを取得するには、実行が必要です。jquery オブジェクトを再構築することなく、jquery コレクションを反復処理する方法はありますか?

4

2 に答える 2

2

jquery オブジェクトを取得するには $(elt) を実行する必要があります。

はい。

jquery オブジェクトを再構築することなく、jquery コレクションを反復処理する方法はありますか?

いいえ。あなたが持っているjQueryオブジェクトは、一致したすべての要素のセットであるためです。個々の要素で jQuery メソッドを使用するには、処理したい個々の要素だけを含む jQuery オブジェクトを取得する必要があります。ループでは、elt(またはthis、どちらも同じ DOM 要素であるため) をラップすることを意味します。

ただし、多くの場合、 jQuery メソッドは必要ありません。あなたの例はそれらの1つですelt.href。直接使用してください:

$(".item").each (i, elt) ->
    var someVar = elt.href;
    # ...

DOM2 HTML 仕様と新しいHTML5 仕様の両方に、直接使用できる多くの反映されたプロパティがリストされています。id、たとえば、特に人々が頻繁に使用するものです。$(this).attr("id")で十分な場所がたくさんありますthis.id(効率が問題になることは非常にまれですが、より効率的です)。

于 2013-03-28T17:57:41.583 に答える
1

はい、jQuery オブジェクトをキャッシュしてから、インデックスで選択します。

var $items = $(".item");

$items.each(function(i) {
    $items.eq(i).doStuff();
});
于 2013-03-28T17:58:30.793 に答える