JQuery: 我可以在使用事件委托时对所有选择器应用操作吗?
JQuery: Can I apply action on all selectors when using event delegation?
我有两个 UL,如下所示
<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>
我想做的是先从 <li>
中删除 <ul>
中的 'active' class,然后应用 'active' class 只是点击的项目。例如
$('#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>
中删除 class 而无需再次按名称引用它们。所以与其说:
$('#ul_one, #ul_two').find('li.active').removeClass('active');
我可以这样说吗:
$('ALL items in the original selector').find('li').removeClass('active');
最好的办法是缓存 UL。
var uls = $('#ul_one, #ul_two');
uls.on('click', 'li', function() {
uls.find('li.active').removeClass('active');
$(this).addClass('active');
});
我有两个 UL,如下所示
<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>
我想做的是先从 <li>
中删除 <ul>
中的 'active' class,然后应用 'active' class 只是点击的项目。例如
$('#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>
中删除 class 而无需再次按名称引用它们。所以与其说:
$('#ul_one, #ul_two').find('li.active').removeClass('active');
我可以这样说吗:
$('ALL items in the original selector').find('li').removeClass('active');
最好的办法是缓存 UL。
var uls = $('#ul_one, #ul_two');
uls.on('click', 'li', function() {
uls.find('li.active').removeClass('active');
$(this).addClass('active');
});