0

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

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

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

4

3 回答 3

3

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

$('.clickable').click(function(event) { 
    $('.last-clicked').removeClass('last-clicked');
    $(event.target).addClass('last-clicked');
}); 
于 2013-08-14T19:07:36.513 回答
1

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

var $clickable = $('.clickable');
$clickable.click(function(event) { 
    $clickable.removeClass('last-clicked');
    $(event.target).addClass('last-clicked');
}); 
于 2013-08-14T19:08:19.543 回答
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/

于 2013-08-14T19:11:55.870 回答