如何取消#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);
}
});
});
});
});
我想取消删除在之前的.agent img点击中创建的所有#submit点击事件。问题是如果用户点击代理img然后决定点击另一个img,ajax会提交给不同的数据串。
答案 0 :(得分:1)
答案 1 :(得分:1)
根据jQuery doc for .delegate()
,您可以使用.undelegate()
删除事件处理程序。
你没有向我们展示你的HTML,但这听起来更像是你应该只有一个委托的事件处理程序,而不是创建一个,删除一个,创建另一个等...你可以存储agentid创建表单元素然后在提交处理程序上检索它,如下所示。
$(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();
});
});