кнопки на jQuery.событие click () запускается дважды
У меня есть следующая проблема с этим кодом:
<button id="delete">Remove items</button>
$("#delete").button({
icons: {
primary: 'ui-icon-trash'
}
}).click(function() {
alert("Clicked");
});
если я нажму эту кнопку, предупреждение появится два раза. Это не только с этой конкретной кнопкой, но и с каждой отдельной кнопкой, которую я создаю.
что я делаю не так?
9 ответов:
ваш текущий код работает, вы можете попробовать его здесь: http://jsfiddle.net/s4UyH/
У вас есть что-то вне примера запуска другого
.click(), проверьте наличие других обработчиков, которые и запуск aclickсобытие на этом элементе.
в этом случае мы можем сделать следующее
$('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