Когда я связываю функцию с элементом флажка как:
$("#myCheckbox").click( function() {
alert($(this).is(":checked"));
});
Флажок изменяет свой проверенный атрибут, прежде чем событие будет инициировано, это - нормальное поведение и дает обратный результат.
Однако, когда я делаю:
$("#myCheckbox").click();
Флажок изменяет проверенный атрибут после того, как событие будет инициировано.
Мой вопрос, там способ инициировать событие щелчка из jQuery как нормальный щелчок, сделал бы (первый сценарий)?
PS: я уже попробовал trigger('click')
;
$('#myCheckbox').change(function () {
if ($(this).prop("checked")) {
// checked
return;
}
// not checked
});
Примечание. В старых версиях jquery можно было использовать attr
. Теперь предлагается использовать prop
для чтения состояния.
Что ж, чтобы соответствовать первому сценарию, это то, что я придумал.
По сути, вместо того, чтобы связывать событие «щелчок», вы связываете событие «изменение» с предупреждением.
Затем, когда вы запускаете событие, сначала вы запускаете щелчок, а затем запускаете изменение.
Существует обходной путь, который работает в jQuery 1.3.2 и 1.4.2 :
$("#myCheckbox").change( function() {
alert($(this).is(":checked"));
});
//Trigger by:
$("#myCheckbox").trigger('click').trigger('change');
Но я согласен, это поведение кажется ошибочным по сравнению с исходным событием.