2010-12-07 3 views
0

Пожалуйста, найдите код нижеВключить вопрос щелчок флажок

$("#chkCopy").toggle(function() { 
    copyDetails(); 
}, 
function() { 
    emptyCopyDetails(); 
}); 

// functions which do not have any effect on the checkbox 
function copyDetails() { 

} 

function emptyCopyDetails() { 
} 

Проблема в том, что флажок не отображается проверенное состояние.

Demo

Заранее спасибо

ответ

0

взглянуть на этот ответ вы бы сделать то же самое

Jquery toggle event is messing with checkbox value

+0

Этот ответ является плохим примером того, что делать, как хорошо, так как `this.checked` является прямой доступ к DOM свойство,` $ (это) .attr («проверено») `is * потрясающий * overkill. – 2010-12-07 11:08:11

2
$("#chkCopy").change(function() {    alert("1"); 

      }, 
      function() { 
       alert("2"); 
      }); 

использование изменение вместо переключения

+2

Это не сработает, `.change()` не имеет перегрузки с двумя обработчиками. – 2010-12-07 11:05:29

1

От documentation:

С .toggle() внутренне использует щелчок h Andler делать свою работу, мы должны отвязать click удалить поведение прикрепленного с .toggle(), так что другие click обработчиков могут быть пойманы в перекрестного огня. Реализация также вызовов .preventDefault() на мероприятии, так ссылки не будут следовать, и кнопка не будет нажата если .toggle() был вызван на элемента.

Таким образом, вы не можете использовать toggle(), если вы хотите, чтобы флажок был установлен и не установлен. Вы можете использовать click() вместо:

$("#chkCopy").click(function() { 
    if (this.checked) { 
     copyDetails(); 
    } else { 
     emptyCopyDetails(); 
    } 
}); 
Смежные вопросы