jQuery / Javascriptが2回起動することを確認する
-
05-07-2019 - |
質問
何らかの奇妙な理由で、確認ボックスが2回表示されます。ここに私のコードがあります:
$(".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経由で)ロードしますか?クリックイベントが同じ要素に2回バインドされ、二重確認が発生する場合があります。
他のヒント
これを試してください:
これを試してください:
<*>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を介して動的にロードされる要素
のイベントをバインドすると発生しますたとえば、 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 confirm
を削除しようとしましたか?
所属していません StackOverflow