jQuery事件目标重复

时间:2013-08-14 19:03:28

标签: jquery

我有一个简单的函数,它将查找特定的类('.clickable')并在单击时添加一个类('.last-clicked)。我想从所有其他现有元素中删除('.last-clicked')类,因此只有一个项目具有该类。

$('.clickable').click(function(event) { 
    $('.clickable').removeClass('last-clicked');
    $(event.target).addClass('last-clicked');
}); 

我的功能有效,但在包装器和函数中引用$('。clickable')似乎很愚蠢。有更有效的方法吗?

3 个答案:

答案 0 :(得分:3)

如果您仅对这些元素使用last-clicked,请尝试:

$('.clickable').click(function(event) { 
    $('.last-clicked').removeClass('last-clicked');
    $(event.target).addClass('last-clicked');
}); 

答案 1 :(得分:1)

如果DOM没有添加或删除可点击元素,您可以这样做:

var $clickable = $('.clickable');
$clickable.click(function(event) { 
    $clickable.removeClass('last-clicked');
    $(event.target).addClass('last-clicked');
}); 

答案 2 :(得分:1)

您可以使用.end() ...

//you can swap out event.target with this, if you like
$('.clickable').click(function(event) { 
    $('.clickable').removeClass('last-clicked').end().find(event.target).addClass('last-clicked');
}); 

样本: http://jsfiddle.net/dirtyd77/eU37H/3/