JQuery флажок не отвечает, когда я проверяю его - PullRequest
2 голосов
/ 13 июля 2010

У меня есть эта функция:

$("#tabela tr").toggle(function(){
    $(this).addClass("zaznaczone");
    $(this).find(" :checkbox").attr("checked", "1");
},function(){
    $(this).removeClass("zaznaczone");
    $(this).find(" :checkbox").attr("checked", "");
});

и это нормально, когда я нажимаю "tr", но когда я нажимаю на флажок, эта строка отвечает, а флажок - нет. Это означает, что флажок после этой операции не проверен.


Я пишу внизу этот код:

$("#tabela tr :checkbox").click(function(){
    if($(this).attr('checked')==''){
        alert("000000");
    }
    else{
        alert("111111111");
    }
});

и что случилось. Когда я нажимаю на пустую кнопку-флажок, я вижу предупреждение 1111111, и перед нажатием кнопки ОК на всплывающем окне появляется флажок. После нажатия ОК флажок не проверяется, и вы можете получить класс из кода. Когда я пытаюсь снять флажок, я вижу то же самое предупреждение 00000, и строка "tr" сбрасывается с кодом up


Ваш код идеально подходит для строки и флажка, но когда я пытаюсь добавить эти строки:

$(this).addClass("zaznaczone");
$(this).removeClass("zaznaczone");

тогда работай так: Когда я нажимаю на строку работы, что это должно, но когда я нажимаю на флажок, то проверьте, что addClass не работает Весь код:

$('#tabela tr').bind('click',function(e){
       var cb = $(this).find(':checkbox');

       if(e.target !== cb[0]){
           if(cb.is(':checked')){
               cb.removeAttr('checked');
               $(this).removeClass("zaznaczone");}

           else{
               cb.attr('checked', 'checked');
               $(this).addClass("zaznaczone");}
       }
   });

1 Ответ

1 голос
/ 13 июля 2010

Я не смог сделать эту работу с .toggle(), он сам вызовет .preventDefault(), что делает эту задачу по какой-то причине просто удивительной.Может быть, я просто что-то упустил, но код ниже просто отлично и работает.

$(document).ready(function(){
   $('tr').bind('click',function(e){
       var cb = $(this).find(':checkbox');

       if(e.target !== cb[0]){
           if(cb.is(':checked'))
               cb.removeAttr('checked');
           else
               cb.attr('checked', 'checked');
       }
   });   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...