2013-04-19 2 views
1

jQuery에서 클릭 할 때 몇 개의 클래스를 토글하는 적절한 방법은 무엇입니까?클릭시 버튼 내에서 클래스를 전환하는 방법은 무엇입니까?

1) HTML을 클릭하기 전에 :

<button class="btn btn-success"><i class="icon-check"></i> Clicked!</button> 

3) HTML 다른 클릭 후 : 클릭 후

<button class="btn"><i class="icon-sign-blank"></i> Click me!</button> 

2) HTML (시작과 동일)

<button class="btn"><i class="icon-sign-blank"></i> Click me!</button> 

현재 jQuery :

$('btn').on('click',function(e) { 
    $('btn > i').removeClass('icon-sign-blank').addClass('icon-check'); 
    $('btn').addClass('btn-success'); 
}); 

하지만 한 번 작동하지만 다시는 작동하지 않습니다. 양방향을 처리하는 적절한 방법은 무엇입니까?

답변

5

(당신이 jQuery를 사용하지 않으려면,이뿐만 아니라 jQuery를하지 않고 수행 할 수 있습니다)!

$('btn').on('click',function(e) { 
    $('btn > i').toggleClass('icon-sign-blank icon-check'); 
    $(this).toggleClass('btn-success'); 
}); 
+1

다른 클래스가 해당 클래스를 수정할 수 없거나 일관성없는 상태가 될 수 있는지 확인하십시오. –

+0

물론이 코드 부분에서는 도움이되었습니다. –

+0

그리고 나는 이것이 깨질 수있는 경우를 언급하고 있습니다 :) –

1

jQuery의 toggleClass 기능. 그것을 관리 할 수 ​​toggleClass를 사용 -해야 -

0

... 그리고 toggleClass를 사용하지 않고 당신이 할 수있는

var btnEl = $('btn'); 
btnEl.on('click', function() { 
    if (btnEl.hasClass('icon-sign-blank')) btnEl.removeClass('icon-sign-blank'); 
    else btnEl.addClass('icon-sign-blank'); 
}); 
+0

.on을 사용하는 것은 전적으로 jQuery 직원입니다! –

+0

사실 그것은 jQuery를 사용하지 않기를 "if"라고 말한 이유입니다. :) addEventListener 등을 사용하기 위해 코드를 재 작업하는 것은 매우 간단합니다. –

+0

@ JulianH.Lam 아니요,별로 쉽지 않은데, 브라우저 전반에 걸쳐 많은 문제가 있습니다. 'jQuery' 없이도이 작업을 수행 할 수 있다고 말하면'jQuery'를 사용하지 마십시오. 더 좋은 점은 질문에'jQuery' 태그가 붙어 있습니다. 그냥 사용하십시오. –

관련 문제