0

#submitクリックイベントの委任を解除するにはどうすればよいですか?

$(document).ready(function(){
            $(".agent img").click(function(){
                $(".agent-form").remove();
                var agentid = $(this).attr("alt"),
                    response = "<form method='post' action='' class='agent-form'><textarea placeholder='Your Comment' name='comment' id='comment'></textarea><input type='button' value='submit' id='submit' /></form>";
                $(response).hide().appendTo(this.parentNode).fadeIn();
                $(".agent").delegate("#submit","click",function(){
                    var message = $("#comment").val();
                    message = escape(message);
                    var dataString = "agent="+agentid+"&message="+message;
                    $.ajax({
                        type: "POST",
                        url: "includes/newcomment.asp",
                        data: dataString,
                        success: function(){
                            console.log(dataString);
                        }
                    });
                });
            });
        });

以前の.agentimgクリックで作成されたすべての#submitクリックイベントの委任を解除したいと思います。問題は、ユーザーがエージェントimgをクリックしてから、ajaxが別のデータ文字列に送信する別のimgをクリックすることを決定した場合です。

4

2 に答える 2

1

jQuery の .unbind() メソッドを使用できます。

ここに文書化されています

基本的..

$(".agent img").unbind("click");
于 2012-10-26T19:02:34.357 に答える
1

jQuery doc for に従って.delegate().undelegate()、イベント ハンドラーを削除するために使用できます。

HTML は表示されませんが、これは、作成、削除、作成などではなく、委任されたイベント ハンドラーを常に 1 つ持つ必要があるように思えます...エージェント ID をフォーム要素に保存できます。それを作成してから、このように送信ハンドラーで取得すると。

 $(document).ready(function(){

        $(document).delegate("#submit", "click", function() {
            var message = $("#comment").val();
            message = escape(message);
            // get agentid for this form
            var agentid = $(this).closest("form").data("agentid");
            var dataString = "agent="+agentid+"&message="+message;
            $.ajax({
                type: "POST",
                url: "includes/newcomment.asp",
                data: dataString,
                success: function(){
                    console.log(dataString);
                }
            });
        });

        $(".agent img").click(function(){
            $(".agent-form").remove();
            var agentid = $(this).attr("alt"),
            // build form HTML (embed agentid into it for later retrieval)
            var response = "<form method='post' action='' class='agent-form' data-agentid='" + agendid + "'><textarea placeholder='Your Comment' name='comment' id='comment'></textarea><input type='button' value='submit' id='submit' /></form>";
            $(response).hide().appendTo(this.parentNode).fadeIn();
        });
    });
于 2012-10-26T19:03:44.743 に答える