Событие изменения jQuery вызывается дважды - PullRequest
31 голосов
/ 29 марта 2011

У меня есть форма с некоторыми полями ввода и выбора, у каждого есть class="myClass".У меня также есть следующий скрипт:

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

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

Ценю вашу помощь!

Ответы [ 8 ]

43 голосов
/ 29 марта 2011

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

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

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

21 голосов
/ 12 ноября 2017

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

$(document).ready(function() {
    $(".myClass").change(function(e) {
        e.stopImmediatePropagation();
        alert('bla');
    })
});
9 голосов
/ 21 сентября 2016

Это ошибка, вы должны добавить

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

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

3 голосов
/ 19 ноября 2013

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

<div class="myclass">
<select class="myClass">   </select>
</div>
3 голосов
/ 05 января 2012

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

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

0 голосов
/ 06 марта 2019

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

 $(".select2Component").unbind(); 
    $(".select2Component").change(function() { 
         //code
    });
0 голосов
/ 29 марта 2011

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

0 голосов
/ 29 марта 2011

Это не так: http://jsfiddle.net/nfcAS/

...