Подтвердить что ты не робот

Событие смены jQuery, вызываемое дважды

У меня есть форма с некоторыми полями ввода и выбора, каждая из которых имеет class="myClass". У меня также есть script:

$(document).ready(function() {
    $(".myClass").change(function() {
        alert('bla');
    })
});

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

Цените свою помощь!

4b9b3361

Ответ 1

Все, о чем я могу думать, это то, что вы использовали тот же самый класс в самой форме. если это так, удалите стиль myClass из тега формы.

Исправлено: http://jsfiddle.net/rY6Gq/1/

Неисправность с двойным предупреждением: http://jsfiddle.net/rY6Gq/

Ответ 2

Его ошибка, Вы добавили

$("#some_id").unbind('change');

перед любым вызовом изменения

Ответ 3

Если это произошло в IE, это может быть эта ошибка, как и для меня: http://bugs.jquery.com/ticket/6593

обновление для jQuery 1.7.1 работало для меня.

Ответ 4

Это происходит, когда один и тот же класс или любой другой атрибут, который вы связываете, имеет одно и то же имя родительский или дочерний. Очевидно, что когда вы меняете ребенка, родитель также получает изменения (его дочерние изменения). Если они имеют один и тот же класс или атрибут, он должен срабатывать дважды. Например, в следующем случае, если вы привязываетесь к "myClass", он будет вызываться дважды.

<div class="myclass">
<select class="myClass">   </select>
</div>

Ответ 5

e.stopImmediatePropagation(); это то, что сработало для меня.

$(document).ready(function() {
    $(".myClass").change(function(e) {
        e.stopImmediatePropagation();
        alert('bla');
    })
});

Ответ 7

Попробуйте отладить код в Firebug, а не предупреждать. Это может потерять фокус и вернуть его, вызывая появление двух изменений, когда не происходит двух событий