gpt4 book ai didi

javascript - 如果绑定(bind)对象被 ajax 刷新,.submit 不起作用

转载 作者:行者123 更新时间:2023-11-28 15:54:36 25 4
gpt4 key购买 nike

AJAXified commenting system因此,当单击“发表评论”按钮时,将进行 ajax 调用,而不是原始表单提交。它工作正常,直到我使用 ajax 使用评论提交按钮刷新页面。假设我只刷新包含帖子、评论和按钮的 div。之后不再触发ajax,而是采用原来的提交方式。

提交表单的 JavaScript 看起来像

jQuery('document').ready(function($){
var commentform=$('#commentform'); // find the comment form

commentform.submit(function(){
// $('#commentform').submit(function(){

我尝试使用 $('#commentform') 而不是没有帮助的变量。

在成功加载新帖子的ajax之后,我尝试再次分配commentform变量。这也没有帮助。

通过ajax加载帖子的javascript部分

var $ = jQuery.noConflict();

$(document).ready(function() {
$(".mhomepage_item").bind("click", function(){ //bind a click event on a class with name = mhomepage_item

$.ajax({
type: "POST",
url: mhomepage.ajax_url,
data: {
action: "get_post",
type: $(this).attr('type'),
current_post_id: $('#post_container').attr('current_post_id')
},
success: function(response) {
response_from_json = JSON.parse(response);

$('#content_container').html(response_from_json['html']);
commentform=$('#commentform');
}
});

// }
});

有人可以建议如何使绑定(bind)到表单提交按钮永久生效,即使在通过ajax重新加载按钮后也是如此?

最佳答案

尝试事件委托(delegate):

$(document).on("submit","#commentform",function(){
// action to perform after submit intent
});

通过使用委托(delegate)事件处理程序,您可以轻松处理动态创建的元素,而无需执行重新绑定(bind)事件处理程序之类的操作。

您还可以将事件绑定(bind)到 body 或调用函数时可用的最近的容器以避免冒泡更多级别文档。您也可以根据您的情况尝试此操作:

jQuery(document).ready(function($){
$('#content_container').on("submit","#commentform",function(){
// action to perform after submit intent
});
});

Documentation

关于javascript - 如果绑定(bind)对象被 ajax 刷新,.submit 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19343052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com