2011-11-28 2 views
3

jquery를 처음 사용하며 다음 코드에 몇 가지 문제가 있습니다. 코드를 클릭하면 항목 클래스가 바뀌므로 첫 번째 부분은 예상대로 작동합니다. 항목에 none이라는 클래스가 있으면 featSelected를 추가하지만 다시 선택을 취소하면 none 클래스가 추가되지 않습니다. 모든 아이디어는 내가 jquery (책에서, 비록 일부 코스를 보면서)를 배우는 것에 던져 지듯이 부드럽게 될 것입니다.if를 사용하여 클래스를 확인한 다음 클래스 jquery를 추가하십시오.

<script type="text/javascript"> 
      $('li span[id^="feat"]').click(function(){ 
      if ($(this).hasClass('none')) { 
       $(this).addClass("featSelected") 
      } 

      else if ($(this).hasClass('featSelected')) { 
       $(this).addClass("none") 
      } 

    }) 

    </script> 

어떤 도움을 주시면 감사하겠습니다.

제이슨

+1

은'none' 클래스가 이미 있습니다! 초기 HTML을 포함 할 수 있습니까? – ManseUK

+1

toggleClass()에 대해 http://api.jquery.com/toggleClass/ – soju

답변

1

사용하여 내장 toggleClass() 기능 :

$('li span[id^="feat"]').click(function(){ 
    $(this).toggleClass("none featSelected"); 
}); 

근무 데모 : 또는 http://jsfiddle.net/7fBLH/

, 당신은 클래스 이름으로 none를 사용하지 않는 것을 고려할 수 있습니다, 그 이후 의미 상으로는 "이 요소에는 class"이 (가)이라고 말하는 것 같습니다. 그런 경우, 당신은 기본 스타일과 CSS 캐스 케이 딩을 사용한다 : 당신이 그것을 제거 didnt는 같은

li span[id^="feat"] { 
    /* default styles here */ 
} 
.featSelected { 
    /* these styles show when the element has this class name */ 
} 
+0

내 사과는 모두 작동합니다! 얼마나 위대한 포럼인가. 나는 토글 클래스와 함께 갔다! 차 한 잔 할 기회조차 없었고 세 가지 대답을했습니다. 고맙습니다!! –

+1

@ Jason : 문제 없습니다 (이 장소를 포럼이라고 부르는 사람을 조심하십시오 ;-)). 또한 가장 유용한 해결책을 올바른 해결책으로 표시 할 수 있음을 잊지 마십시오. 그러면 솔루션을 신속하게 찾을 때와 동일한 문제가있는 미래의 사이트 방문자가 도움이 될 수 있습니다. –

1

코드에 새 클래스 이름이 추가됩니다.

$('li span[id^="feat"]').click(function(){ 
    $(this).toggleClass("none featSelected"); 
}); 

편집 :

당신이 무엇을하고 있는지에 따라
$('li span[id^="feat"]').click(function(){ 
    if ($(this).hasClass('none')) { 
     $(this).removeClass("none"); 
     $(this).addClass("featSelected"); 
    } else if ($(this).hasClass('featSelected')) { 
     $(this).removeClass("featSelected"); 
     $(this).addClass("none"); 
    } 
}); 

그러나, 당신은 단지 그들 모두 toggleClass을 사용할 수 있습니다 : 당신은 또한 기존의 클래스 이름을 제거해야 난 당신의 코드가 실종됐다 발견 문장의 끝에 세미콜론. 나는 위의 예제에서 그들을 추가했고, 나중에 참조 할 때는 always use semicolons을 javascript로 끝내야한다.

+0

+1을 사용해야합니다. – ManseUK

+0

토글 클래스가 가장 잘 보이지만 작동하지 않습니까? 내가 이미 HTML을 보시고 선택하신 것을 보여주기 위해 클래스를 설정해야하기 때문입니다; –

+0

'

  • class = " featSelected " 클래스 ="없음 "> = 대한 <라벨"uid_prodf_featid #의 CurrentRow와 번호 "> #의 txt_feat_name 번호 />
  • ' –

    0

    jQuery의 addClass() 메서드는 기존 클래스를 덮어 쓰지 않습니다. 요소의 클래스를 덮어 쓰려면 단순히 addClass()을 호출하는 것 이상의 작업을 수행해야합니다.

    'none'클래스를 실제로 제거하지 않으므로 if 문은 항상 true로 평가되고 else 코드는 실행되지 않습니다.

    관련 문제