Установите и снимите флажок и прочитайте его состояние - PullRequest
0 голосов
/ 30 ноября 2010

Как я могу прочитать состояние своего флажка и установить его состояние видимым?Я пытаюсь что-то вроде этого, но всегда возвращает true:

 $('.show-check').live('click', function(e) {
    e.preventDefault();

    var checked = ($(this).is(':checked'));
    if(checked == true){
       $(this).attr('checked', true); 
    }
    else{
        $(this).attr('checked', false);
    }
 });


    <li>
        <img src="" class="show-image"/>
        <span class="show-title"></span>
        <input type="checkbox" class="show-check" />
    </li>

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Это работает следующим образом:

 $('.show-check').live('click', function() {


var checked = ($(this).is(':checked'));

if(checked){
   $(this).attr('checked', true);
}
else{
    $(this).attr('checked', false);
}

});

Я думаю, что вы не можете установить флажок, потому что действие по умолчанию запрещено, то есть установить / снять флажок

Вот моя мысль:

  1. флажок изначально снят,

  2. при нажатии флажок событие clickсрабатывает, и var checked устанавливается в значение true;

  3. , поскольку установлено значение true, блок if(checked) всегда будет выполняться;

  4. но вы можете задаться вопросом, почему флажок не установлен в пользовательском интерфейсе.Я думаю, это потому, что вы установили e.preventDefault(), который говорит, чтобы флажок не влиял на поведение по умолчанию для события click, то есть для его проверки;

  5. при следующей проверке сновато же самое произойдет.

0 голосов
/ 30 ноября 2010

Может быть, это было бы яснее, если бы вы использовали событие .change () вместо события .clecked ().

Вы говорите, когда флажок установлен, если установлен флажок == true, чем установлен флажок = true, поэтому ложная часть никогда не будет выполнена, если вы начнете с ее флажком. То же самое верно, если вы начнете с того, что установлено значение false.

...