質問

何らかの奇妙な理由で、確認ボックスが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 フォームボタン

をクリックすると、いくつかの動的htmlコンテンツ(モーダルの動的コンテンツなど)を読み込みます

そしてそのコンテンツで、一部のボタンでクリックイベントをバインドしている場合、たとえば 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 を削除しようとしましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top