0

それぞれの機能自体を使用するか、いくつかのスマートセレクターを使用して同じことを行うのが良いでしょう。

例:

各機能

$('nav#mainNav > ul > li > ul').each(function(){
   $(this).closest('li').addClass('hasSub'); 
});

セレクタ

var addClass = $('nav#mainNav > ul > li > ul').closest('li').addClass('hasSub');

これらはどちらも同じことを行いますが、一方を他方よりも優先することに何か意味はありますか?

4

4 に答える 4

1

これらはどちらも同じことを行いますが、一方を他方よりも優先することに何か意味はありますか?

はい。2 番目のものは短く、パフォーマンスが向上します (.eachこれらのメソッドから内部的に呼び出されるため)。ここに を組み込む理由はまったくありません。each使用するのと同じくらい無意味.each(function(){ $(this).addClass(…); })です。

:hasところで、セレクターを探しているのかもしれません。これにより、式がさらに短くなります。

$('#mainNav > ul > li:has(ul)').addClass('hasSub');

がリスト項目の直接の子であることを確認したいul場合でも、コメントからの提案を使用することができます (closest(li)常に ul の直接の親です)。

$('nav#mainNav > ul > li > ul').parent().addClass('hasSub');
于 2013-05-26T23:02:55.163 に答える