jQuery, флажки и .is (“: проверенный”)

Когда я связываю функцию с элементом флажка как:

$("#myCheckbox").click( function() {
    alert($(this).is(":checked"));
});

Флажок изменяет свой проверенный атрибут, прежде чем событие будет инициировано, это - нормальное поведение и дает обратный результат.

Однако, когда я делаю:

$("#myCheckbox").click();

Флажок изменяет проверенный атрибут после того, как событие будет инициировано.

Мой вопрос, там способ инициировать событие щелчка из jQuery как нормальный щелчок, сделал бы (первый сценарий)?

PS: я уже попробовал trigger('click');

86
задан Andrew 9 February 2016 в 21:54
поделиться

3 ответа

$('#myCheckbox').change(function () {
    if ($(this).prop("checked")) {
        // checked
        return;
    }
    // not checked
});

Примечание. В старых версиях jquery можно было использовать attr . Теперь предлагается использовать prop для чтения состояния.

88
ответ дан 24 November 2019 в 08:05
поделиться

Что ж, чтобы соответствовать первому сценарию, это то, что я придумал.

http://jsbin.com/uwupa/edit

По сути, вместо того, чтобы связывать событие «щелчок», вы связываете событие «изменение» с предупреждением.

Затем, когда вы запускаете событие, сначала вы запускаете щелчок, а затем запускаете изменение.

0
ответ дан 24 November 2019 в 08:05
поделиться

Существует обходной путь, который работает в jQuery 1.3.2 и 1.4.2 :

$("#myCheckbox").change( function() {
    alert($(this).is(":checked"));
});

//Trigger by:
$("#myCheckbox").trigger('click').trigger('change');​​​​​​​​​​​​​

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

26
ответ дан 24 November 2019 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: