-1

jQuery 選択のさまざまな方法に従うことの違いは何ですか。私には、それらは同じパフォーマンスコストで同じことを行うさまざまな方法のようです:

$("#list li").hover(function () {
                $(this).addClass("red");
}, function (){
        $(this).removeClass("red");
});

大なり記号の場合:

$("#list > li").hover(function () {
                $(this).addClass("red");
}, function (){
        $(this).removeClass("red");
});

コンテキストで今すぐ追加:

$("li", $("#list")).hover(function () {
                $(this).addClass("red");
}, function (){
        $(this).removeClass("red");
});
4

3 に答える 3

5
  • #list li同じ要素のセットを見つけますが、最新のブラウザーでは、セレクター全体をブラウザーのセレクター エンジンに渡すことができるため、はるかに高速になる可能性があります。

  • #list > liの直接の子であるすべてのli要素を検索します。つまり、 ではありません。#list<ul id="list"><li><div id="list"><ul><li>

  • $("li", $("#list"))一致する要素を含む jQuery オブジェクトを作成し、コンテキストを持つ任意の要素(つまり、内部にあるすべての要素)#listを含む新しい要素を作成します。実際には読めないので、使用しないでください。li#listli#list


他にも次の方法があります。

  • $('#list').children('li')等しい$('#list > li')
  • $('#list').find('li')等しい$('#list li')

どちらの場合もネイティブの速度の利点を利用できないため、querySelectorAll読みやすくなるだけでなく、$("li", $("#list"))

于 2012-07-10T11:56:06.843 に答える
1

それらは違う:

#list liの子孫である任意のリスト項目を参照します#list。これは$("li", $("#list"))

#list > liは、 の直接の子 (孫などではない) である任意のリスト要素を参照します#list

于 2012-07-10T11:55:39.230 に答える
0

"#list li"and $("li", $("#list")): 子、孫を含む #list 内のすべての li 要素...

"#list > li": #list の li 子のみ。

于 2012-07-10T11:56:06.507 に答える