2015-05-27 4 views
3

У меня есть флажок с идентификатором myopt, и у меня есть обработчик события клика, как показано ниже;Событие с щелчком мыши Chekbox не активировано при проверке

$("#globalBody").on("click", "#myopt", function (event) { 
    if ($(this).prop("checked")) { 
     // do something 
    } else { 
     // do something 
    } 
}); 

Сейчас в моем коде, я

$("#myopt").attr("checked",true); 

Мой вопрос это не вызовет обработчик события щелчка выше. Он вызывается, если я устанавливаю флажок вручную.

В чем проблема?

ответ

5

Вы должны использовать .trigger() программно ссылаться на обработчик щелчка

выполнять все обработчики и поведения, прикрепленные к совпавших элементов для данного типа события.

Script

$("#myopt").prop("checked",true).trigger('click'); 

Примечание: Я бы порекомендовал вам использовать change событие

$("#globalBody").on("change", "#myopt", function (event) { 
    if (this.checked) { 
     // do something 
    } else { 
     // do something 
    } 
}); 

//Change 
$("#myopt").prop("checked",true).trigger('change'); 
+3

Любые причины использования изменений вместо щелчка? – testndtv

+0

@testndtv, перейдите по ссылке http://stackoverflow.com/questions/11205957/jquery-difference-between-change-and-click-event-of-checkbox – Satpal

+0

О да ... и код выше на самом деле снимает флажок! – testndtv

0

Проверить эту скрипку пожалуйста https://jsfiddle.net/kwp7sjwf/2/

У меня есть две версии в зависимости от того, что необходимость. Как я понимаю, вы хотите щелкнуть где-то внутри #globalBody и установить флажок myopt. В приведенной выше скрипте я сделал это, но я разместил в комментариях блок кода, который обрабатывает вторую версию, в которой вы хотите прослушать только тогда, когда изменения состояния флажка myopt (клики прямо на флажке). Надеюсь, это поможет

Смежные вопросы