我有两个帖子和评论页面。回复按钮的功能类似,都在文档就绪事件中使用unbind功能。不知何故,只要一个函数访问不同的类,它们就能工作。当一个人被注释掉时,他们都会工作。我感谢任何帮助和想法。谢谢!
//Replies Posts
$(document).ready(function () {
$(document).unbind().on("click", ".btnReplySubmit", function() {
if (!$.trim($(this).closest(".myRepliesForm").find(".textareaReply").val())) {
alert("Empty Content");
}
else {
$.ajax({
url: "/Replies/Create/",
type: "post",
cache: false,
data: $(this).closest(".myRepliesForm").serialize(),
success: function() {
$(".reloadComments").load(location.href + " .reloadComments");
$(".reloadComments").show("slow");
}
});
$(this).closest(".myRepliesForm").find(".textareaReply").val("");
}
return false;
});
});
//Reply Review
$(document).ready(function () {
$(document).unbind().on("click", ".btnReplySubmitReview", function () {
if (!$.trim($(this).closest(".myRepliesFormReview").find(".textareaReplyReview").val())) {
alert("Empty Content");
}
else {
$.ajax({
url: "/ReviewReplies/Create/",
type: "post",
cache: false,
data: $(this).closest(".myRepliesFormReview").serialize(),
success: function () {
$(".reloadCommentsReview").load(location.href + " .reloadCommentsReview");
$(".reloadCommentsReview").show("slow");
}
});
$(this).closest(".myRepliesFormReview").find(".textareaReplyReview").val("");
}
return false;
});
});
答案 0 :(得分:1)
如果你在两个事件处理程序上都使用unbind
,那么其中一个函数将不可避免地被绑定。您也不需要两个ready
调用,因为一个就足够了,最后,您可以按如下方式链接事件处理程序绑定:
$(document).ready(function () {
$(document).unbind()
.on("click", ".btnReplySubmit", function() {
if (!$.trim($(this).closest(".myRepliesForm").find(".textareaReply").val())) {
// ...
}
else {
// ...
}
return false;
})
.on("click", ".btnReplySubmitReview", function () {
if (!$.trim($(this).closest(".myRepliesFormReview").find(".textareaReplyReview").val())) {
// ...
}
else {
// ...
}
return false;
});
});
答案 1 :(得分:0)
因为unbind将清除所有以前的绑定。
但是..为什么在文档上使用bind / unbind使事情变得复杂,你可以在两个按钮上做一个点击监听器:
$(document).ready(function () {
$('.btnReplySubmit').click(function(){
// alert(1);
});
$('.btnReplySubmitReview').click(function(){
// alert(2);
})
});
答案 2 :(得分:0)
我在这里看到的主要问题是您正在解除附加到$(document)
的事件。另外,根据jquery的api,你不应该再使用unbind,因为它已经被弃用了。
相反,您应该像这样构建代码
$(document).ready(function() {
$('. btnReplySubmit').click(function() {
// your code here
})
$('. btnReplySubmitReview').click(function() {
// your code here
})
})
这使您的事件声明更清晰,更容易阅读
答案 3 :(得分:0)
所有答案都是正确的。我可能只是添加.on(events [, selector] [,data], handler)
方法中的选择器是事件触发器,但事件绑定到您的文档中。