2013-08-14 2 views
0

특정 클래스 ('.clickable')를 찾아서 클릭 할 때 클래스를 추가하는 간단한 함수가 있습니다 ('. last-clicked). 그 클래스에 단 하나의 항목 만 있으므로 기존의 다른 모든 요소에서 ('가장 최근에 클릭 된') 클래스를 제거하고 싶습니다.jQuery 이벤트 대상 반복

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

내 함수는 작동하지만 래퍼와 함수에서 $ ('. clickable')을 참조하는 것은 어리석은 것처럼 보입니다. 보다 효율적인 접근 방법이 있습니까? 당신은 단지 이러한 요소에 대한 last-clicked를 사용하는 경우

+4

아니요. 'this'를 사용하여 클릭 한 요소를 대상으로 할 수 있지만,'clickable' 클래스로 모든 요소에서 클래스를 제거하려면 올바른 방법으로 수행해야합니다. – tymeJV

답변

3

시도 :

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

DOM을 클릭 할 요소를 추가하거나 당신이 할 수있는 제거해야 할 것하지 않는 경우 :

var $clickable = $('.clickable'); 
$clickable.click(function(event) { 
    $clickable.removeClass('last-clicked'); 
    $(event.target).addClass('last-clicked'); 
}); 
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'); 
}); 

DEMO : http://jsfiddle.net/dirtyd77/eU37H/3/