2015-02-05 2 views
-1

У меня есть форма с .myclass, внутри некоторых ul ->li ->labelJQuery hasclass или toggleclass вопрос

, когда я использую addClass это работает:

$(".myclass label").each(function(){ 
    var $this = $(this);   
    $this.on("click", function(){ 
     $this.addClass("active"); 
    }); 
});` 

, но когда я пытаюсь проверить, если класс ничего не происходит

$(".myclass label").each(function(){ 
    var $this = $(this);  
    $this.on("click", function(){ 
     if($this.hasClass("active")) 
      $this.removeClass("active"); 
     else 
      $this.addClass("active"); 
    }); 
}); 

Я попытался использовать toggleClass, но ничего. Где я ошибаюсь?

* редактировать извините, я забыл, что есть <input> внутри метки:

<form action="" method="post" class="myClass"> 
<ul> 
    <li> 
    <ul> 
    <li class="item-1"><label><input type="checkbox">my label 1</label></li> 
    <li class="item-22"><label><input type="checkbox">my label 2</label></li> 
    <li class="item-34"><label><input type="checkbox">my label 3</label></li> 

и т.д ...

+1

Работает отлично -> http://jsfiddle.net/t233kL5a/ – adeneo

+0

Да, отлично работает, как говорит адено. Обратите внимание, что вы можете улучшить логику, удалив «каждый» и используя «toggleClass». Вы проверили консоль на наличие ошибок в другом месте вашего кода? –

+0

что вы на самом деле хотите? –

ответ

0
$('.myclass label').on('click', function (event) { 
    if($(event.target).is("label")) { 
     if ($(event.target).hasClass("active")) { 
      $(event.target).removeClass("active"); 
     }else{ 
      $(event.target).addClass("active"); 
     } 
    } 
}); 

проблема дважды щелкните порождена> вход ровно, этикеткой.