Ответ 1
Убедитесь, что вы случайно не включили свой script в свою HTML-страницу дважды.
Я устанавливаю элемент ссылки и вызываю его событие click в jquery, но событие click вызывает два раза, см. ниже код jquery.
$("#link_button")
.button()
.click(function () {
$("#attachmentForm").slideToggle("fast");
});
Просьба сообщить.
Спасибо.
Убедитесь, что вы случайно не включили свой script в свою HTML-страницу дважды.
Отменить разблокировку перед кликом;
$("#link_button").unbind('click');
$("#link_button")
.button()
.click(function () {
$("#attachmentForm").slideToggle("fast");
});
Это означает, что ваш код дважды включал скрипт jquery. Но попробуйте следующее:
$("#btn").unbind("click").click(function(){
//your code
});
Я пробовал,
e.stopImmediatePropagation()
;
Кажется, это работает для меня.
В моем случае я использовал ниже script для решения проблемы
$('#id').off().on('click',function(){
//...
});
off()
отменяет привязку всех событий к #id
.
Если вы хотите отменить только событие click
, используйте off('click')
.
Просто позвоните .off() прямо перед вызовом .on().
Это приведет к удалению всех обработчиков событий:
$(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");
});
Для меня этот код решил проблему. Но будьте осторожны, чтобы случайно не включить ваш script дважды на вашу HTML-страницу. Я думаю, что если вы правильно выполняете эти две вещи, ваш код будет работать правильно. Благодаря
попробуйте это
$('#ddlSupervisor').live('change', function (e) {
if (e.handled !== true) { //this makes event to fire only once
getEmployeesbySupervisor();
e.handled = true;
}
});
Это определенно ошибка, особенно в FireFox. Я искал alot, попробовал все вышеупомянутые ответы и, наконец, получил это как ошибка многих экспертов над SO. Итак, я, наконец, придумал эту идею, объявив переменную типа
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);
}
});
Таким образом, он сначала проверяет, скорее, функция была вызвана ранее или нет.
Добавление e.preventDefault();
в начале моей функции сработало для меня.
Это старый вопрос, но если вы используете делегирование событий, это то, что вызвало это для меня.
После удаления .delegate-two
он прекратил выполнение дважды. Я считаю, что это происходит, если оба делегата присутствуют на одной странице.
$('.delegate-one, .delegate-two').on('click', '.button', function() {
/* CODE */
});
этот фрагмент кода не содержит ничего плохого. Это другая часть вашего script, как @karim сказал
В моем случае он отлично работал в Chrome, и IE дважды вызывал .click()
. если это была ваша проблема, тогда я исправил ее, вернув false, после вызова события .click()
$("#txtChat").keypress(function(event) {
if (event.which == 13) {
$('#btnChat').click();
$('#txtChat').val('');
return false;
}
});
Вызов unbind
решил мою проблему:
$("#btn").unbind("click").click(function() {
// your code
});
Когда я использую этот метод на странице загрузки с jquery, я пишу $('#obj').off('click');
перед установкой функции щелчка, поэтому пузырь не возникает. Работает для меня.
Меня обманули выбор, соответствующий нескольким элементам, поэтому каждый щелкнул. :first
помогло:
$('.someClass[data-foo="'+notAlwaysUniqueID+'"]:first').click();
У меня тоже была эта проблема в FF. Однако мой тег привязан к тегу <a>
. Хотя тег <a>
никуда не денется, он все равно делает двойной щелчок. Вместо этого я заменил тег <a>
тегом <span>
, и проблема с двойным щелчком исчезла.
Другой альтернативой является полное удаление атрибута href, если ссылка никуда не идет.
Я столкнулся с этой проблемой, потому что мой $(elem).click(function(){});
script был встроен в div, для которого было установлено значение style="display:none;"
.
Когда css-дисплей был переключен на блок, script добавит прослушиватель событий второй раз. Я переместил script в отдельный .js файл, и дублирующий прослушиватель событий больше не был запущен.
Мой простой ответ заключался в том, чтобы превратить привязку кликов в функцию и вызвать это из 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();
Это смутило меня, потому что ничего не случилось. Проблема заключалась в том, что внутренний .share
toggle
будет отменять внешний .share
toggle
.