кнопки на jQuery.событие click () запускается дважды



У меня есть следующая проблема с этим кодом:



<button id="delete">Remove items</button>

$("#delete").button({
icons: {
primary: 'ui-icon-trash'
}
}).click(function() {
alert("Clicked");
});


если я нажму эту кнопку, предупреждение появится два раза. Это не только с этой конкретной кнопкой, но и с каждой отдельной кнопкой, которую я создаю.



что я делаю не так?

608   9  

9 ответов:

ваш текущий код работает, вы можете попробовать его здесь: http://jsfiddle.net/s4UyH/

У вас есть что-то вне примера запуска другого .click(), проверьте наличие других обработчиков, которые и запуск a click событие на этом элементе.

в этом случае мы можем сделать следующее

$('selected').unbind('click').bind('click', function (e) {
  do_something();
});

У меня было событие, запускающее два раза изначально, когда страница обновляется, она срабатывает четыре раза. Это было после многих бесплодных часов, прежде чем я понял с помощью поиска google.

Я также должен сказать, что код изначально работал, пока я не начал использовать виджет аккордеона JQueryUI.

странное поведение, которое я испытал также. Так что для меня" возвращение ложь " сделал трюк.

        $( '#selector' ).on( 'click', function() {
            //code
            return false;
        });

Если вы используете

$( document ).ready({ })

или

$(function() { });

более одного раза функция щелчка будет срабатывать столько раз, сколько она используется.

вы можете попробовать это.

    $('#id').off().on('click', function() {
        // function body
    });
    $('.class').off().on('click', function() {
        // function body
    });

У меня была та же проблема, и я попробовал все, но это не сработало. Поэтому я использовал следующий трюк:

function do_stuff(e)
{
    if(e){ alert(e); }
}
$("#delete").click(function() {
    do_stuff("Clicked");
});

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

Я нашел, что привязка элемента.щелчок в функции, которая происходит более одного раза, будет стоять в очереди, поэтому в следующий раз, когда вы ее нажмете, она будет запускаться столько раз, сколько была выполнена функция привязки. Ошибка новичка, вероятно, с моей стороны, но я надеюсь, что это поможет. TL, DR: убедитесь, что вы связываете все клики по функции настройки, которая происходит только один раз.

в моем случае я использовал команду change следующим образом

$(document).on('change', '.select-brand', function () {...my codes...});

а потом я изменил путь на

$('.select-brand').on ('change', function () {...мои коды...});

и это решило мою проблему.

Так же, как то, что Ник пытается сказать, что-то извне запускает событие дважды. Чтобы решить эту проблему, вы должны использовать событие.stopPropagation () для предотвращения пузырения родительского элемента.

$('button').click(function(event) {
    event.stopPropagation();
});

Я надеюсь, что это помогает.

Comments

    Ничего не найдено.