Вопрос касательно функции jQuery click () - PullRequest
2 голосов
/ 16 августа 2010
    $('document').ready(function(){
        $('[name=mycheckbox]').live('click', function(){
            if($(this).is(':checked'))
            {
                alert('it is checked');
            }
            else
            {
                alert('it is not checked');
            }
        });

        $('[name=mycheckbox]').click();
    });

Если флажок установлен и вы щелкнули по нему, в окне предупреждения будет указано: «Он не установлен», но когда страница запускается и событие щелчка запускается ( с установленным флажком ), в окне оповещения написано: «оно проверено». Зачем? На состояние флажка не влияет событие click? Это mousedown, который меняет состояние?

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Вместо click здесь следует использовать событие change, например:

$('[name=mycheckbox]').live('change', function(){

И вызвать его с помощью того же триггера, например:

$('[name=mycheckbox]').change();

click отделен от change, если вы хотите, чтобы событие сработало, когда проверка на самом деле имеет завершено , то вы хотите change, а не click. В качестве альтернативы, если вы все еще хотите переключить его из исходного состояния, сделайте следующее:

$('[name=mycheckbox]').click().change();
0 голосов
/ 16 августа 2010

То, что происходит, довольно тонко.

У меня есть кнопка и флажок, связанные со следующим кодом:

$("#chkbx").click(function() {

    if ($(this).is(':checked')) {
        alert('checked');
    }
    else {
        alert('unchecked');
    }
});

$("#MyButton").click(function() {

    $("#chkbx").click();
});

Когда я нажимаю на флажок, все отображается так, как выожидайте.

Когда я нажимаю на кнопку, происходит обратное.

То, что происходит, заключается в том, что когда вы нажимаете на флажок, он запускает событие нажатия по умолчанию перед выполнением вашего кодаи, таким образом, ваш код принимает статус после события щелчка по умолчанию.

Когда вы вызываете метод click непосредственно для элемента, он фактически вызывает вашу функцию щелчка и затем выполняет событие по умолчанию.

Я не то, почему это должно быть.или если это намеренно, или ошибка.

0 голосов
/ 16 августа 2010

Вместо живого события (которое я обнаружил в лучшем случае с ошибками) попробуйте привязать обычный щелчок даже вместо этого.Я сделал что-то подобное, что отлично работает с событием .click, а не .live ("click",

Надеюсь, это поможет: S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...