24 ответов:
сделать un unbind перед щелчком;
$("#link_button").unbind('click'); $("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); });
Это означает, что ваш код jQuery скрипт дважды. Но попробуйте вот что:
$("#btn").unbind("click").click(function(){ //your code });
в моем случае я использовал следующий скрипт, чтобы преодолеть проблему
$('#id').off().on('click',function(){ //... });
off()отменяет привязку всех событий к#id. Если вы хотите, чтобы развязать толькоclickсобытие, а затем использоватьoff('click').
просто позвоните .выкл() прямо перед вашим звонком .на.)(
это приведет к удалению всех обработчиков событий:
$(element).off().on('click', function() { // function body });чтобы удалить только зарегистрированные обработчики событий "click":
$(element).off('click').on('click', function() { // function body });
довольно распространенное решение проблемы с двумя щелчками-это положить
e.stopPropagation()в конце вашей функции (при условии, что вы используете
function(e)что есть). Это предотвращает возникновение события, которое может привести к повторному выполнению функции.
у меня была та же проблема, но вы можете попробовать изменить этот код
$("#link_button") .button() .click(function () { $("#attachmentForm").slideToggle("fast"); });для этого:
$("#link_button").button(); $("#link_button").unbind("click").click(function () { $("#attachmentForm").slideToggle("fast"); });для меня этот код решил проблему. Но будьте осторожны, чтобы случайно не включить ваш скрипт дважды в вашу HTML-страницу. Я думаю, что если вы делаете эти две вещи, ваш код будет работать правильно. Спасибо
пожалуйста, попробуйте это
$('#ddlSupervisor').live('change', function (e) { if (e.handled !== true) { //this makes event to fire only once getEmployeesbySupervisor(); e.handled = true; } });
Это определенно ошибка, особенно в то время как это FireFox. Я искал много пробовал все вышеперечисленные ответы и, наконец, получил его как ошибку многими экспертами. Итак, я, наконец, придумал эту идею, объявив переменную как
var called = false; $("#ColorPalete li").click(function() { if(!called) { called = true; setTimeout(function(){ //<-----This can be an ajax request but keep in mind to set called=false when you get response or when the function has successfully executed. alert('I am called'); called = false; },3000); } });таким образом, он сначала проверяет, была ли функция ранее вызвана или нет.
это более старый вопрос, но если вы используете делегирование событий, это то, что вызвало его для меня.
после удаления
.delegate-twoОн перестал выполняться дважды. Я считаю, что это происходит, если оба делегата присутствуют на одной странице.$('.delegate-one, .delegate-two').on('click', '.button', function() { /* CODE */ });
этот фрагмент кода не содержит ничего плохого. Это еще одна часть вашего сценария, как сказал @karim
в моем случае, он работал нормально в Chrome и IE вызывал
.click()два раза. если это была ваша проблема, то я исправил ее путем возврата false, после вызова.click()событие$("#txtChat").keypress(function(event) { if (event.which == 13) { $('#btnChat').click(); $('#txtChat').val(''); return false; } });
Я был обманут выбором, соответствующим нескольким элементам, поэтому каждый был нажат.
:firstпомогло:$('.someClass[data-foo="'+notAlwaysUniqueID+'"]:first').click();
у меня тоже была эта проблема на FF. Однако мой тег был привязан к
<a>тег. Хотя и то<a>тег никуда не уходил, он все еще делал двойной щелчок. Я поменял местами<a>метка<span>тег вместо двойной щелчок проблема исчезла.Другой альтернативой является полное удаление атрибута href, если ссылка никуда не денется.
я столкнулась с этой проблемой, потому что мой
$(elem).click(function(){});скрипт был помещен в div, который был установлен вstyle="display:none;".когда отображение css было переключено на блок, скрипт добавит прослушиватель событий во второй раз. Я перенес сценарий в отдельный .файл js и прослушиватель повторяющихся событий больше не инициировались.
когда я использую этот метод на странице загрузки с jquery, я пишу
$('#obj').off('click');перед установкой функции щелчка, поэтому пузырь не возникает. Работать на меня.
мой простой ответ состоял в том, чтобы превратить привязку щелчка в функцию и вызвать ее из onclick элемента - сработало удовольствие! в то время как ни один из вышеперечисленных не сделал
Я не уверен, почему, но у меня была эта проблема с
$(document).on("click", ".my-element", function (e) { });когда я изменил его на
$(".my-element").click(function () { });проблема была решена. Но определенно что-то не так в моем коде.
Я решил эту проблему, изменив тип элемента. вместо кнопки я размещаю ввод, и эта проблема больше не возникает.
instesd of:
<button onclick="doSomthing()">click me</button>заменить на:
<input onclick="doSomthing()" value="click me">
была та же проблема. Это сработало для меня -
$('selector').once().click(function() {});надеюсь, это кому-то поможет.
в моем случае HTML был выложен следующим образом:
<div class="share"> <div class="wrapper"> <div class="share"> </div> </div> </div>и мой jQuery был такой:
jQuery('.share').toggle();это смутило меня, потому что ничего не происходило. Проблема была в том, что внутренний
.sharestoggleстереть внешний.sharestoggle.
Comments