2016-10-06 10 views
0

私は私がやりたい何なJQuery:イベント委任を使用すると、すべてのセレクタに対してアクションを適用できますか?

<ul id="ul_one"> 
    <li>list item</li> 
    <li>list item</li> 
    <li class="active">list item</li> 
</ul> 
<ul id="ul_two"> 
    <li>list item</li> 
    <li>list item</li> 
    <li class="active">list item</li> 
</ul> 

以下のように2つのULのを持っているが最初のs「の両方<ul>にS」の<li>から「アクティブ」クラスを削除してからちょうどに 『アクティブ』クラスを適用されますクリックしたアイテム。たとえば、私は代表団を使用していますという事実を考えると

$('#ul_one, #ul_two').on('click', 'li', function(e) 
{ 
    var clicked = e.target; 
    $('#ul_one, #ul_two').find('li.active').removeClass('active'); 
    $(clicked).addClass('active'); 
}); 

のために、私は再び名前によってそれらを参照することなく、両方の<ul>年代からクラスを削除することができます方法があります。だからではなく、というのが:

$('#ul_one, #ul_two').find('li.active').removeClass('active'); 

私のような何かを言うことができます。

$('ALL items in the original selector').find('li').removeClass('active'); 
+0

'li.active'をターゲットにするだけでは十分ではありませんか?例:https://jsfiddle.net/avs19ajk/ –

+0

いいえ、これは簡単な例です。実際には、私はこの機能を触れたくないアクティブliのいくつかの他のulがあります – Typhoon101

答えて

1

最善のことはULに関してをキャッシュすることです。

var uls = $('#ul_one, #ul_two'); 
uls.on('click', 'li', function() { 
    uls.find('li.active').removeClass('active'); 
    $(this).addClass('active'); 
}); 
+1

魅力のように動作します。非常に簡単です。ありがとう – Typhoon101

関連する問題