JQuery / Javascript подтверждают приход дважды
-
05-07-2019 - |
Вопрос
По какой-то странной причине я получаю свой блок подтверждения, появляющийся дважды. вот мой код:
$(".DeleteComment").live("click", function(){
var CommentID = $(this).attr("rel");
var confirm
if (!confirm('Are you sure you want to permanently delete this comment?')){
return false;
}else{
$(this).html("loading").css("color", "#999");
//AJAX HERE
return false;
}
});
Решение
Загружаете ли вы какой-либо контент динамически (через ajax)? Это может быть случай, когда событие click привязывается к одному и тому же элементу дважды, что приводит к двойному подтверждению.
Другие советы
попробуйте это
попробуйте это
<*>blockDelete = false;
$(".DeleteComment").live("click", function(event){
event.preventDefault();
//event.stopPropagation(); // it is not necessary
if (! попробуйте это
<*>blockDelete)
{
попробуйте это
<*>blockDelete =true;
var rconfirm = confirm('Are you sure you want to permanently delete this comment?');
if (rconfirm)
{
$(this).html("loading").css("color", "#999");
var CommentID = $(this).attr("rel");
//AJAX HERE
//return the value "false" the variable " попробуйте это
<*>blockDelete" once again ajax response
}
}
});
Это происходит, когда мы связываем событие с элементами, которые загружаются динамически через AJAX
Так, например, мы загружаем некоторое динамическое HTML-содержимое (например, динамическое содержимое в модальном режиме) по нажатию кнопки формы edit
,
И в этом контенте, если у нас есть связанное событие нажатия кнопки на какой-либо кнопке , например. Кнопка delete
, затем каждый раз, когда мы нажимаем кнопку формы edit
, связывает событие click
с delete
кнопка каждый раз,
И если вы установили флажок подтверждения для события нажатия кнопки delete
, тогда будет запрашивать у вас столько раз, сколько он был связан для этого события нажатия , значит здесь, если мы нажали кнопку формы edit
5 раз, после чего она запросит ваше подтверждение 5 раз.
Таким образом, для решения этой проблемы вы можете отменить привязку
к событию каждый раз перед привязкой события к динамически загружаемому элементу следующим образом:
$(document).off('click', '.DeleteComment').on('click', '.DeleteComment', function () {
if (confirm('Are you sure you want to permanently delete this comment?')){
//Delete process
return true;
}
return false;
}
Или Еще один способ решения этой проблемы - добавить скрипт на главной странице, то есть статическая страница не динамически загружается .
Вы пытались удалить этот неиспользованный var Подтвердить
?