jquery replaceWith之后脚本停止工作

scripts stop working after jquery replaceWith

本文关键字:停止工作 脚本 之后 replaceWith jquery      更新时间:2023-09-26

所以我有一个使用jquery-post方法提交的表单,并用ajax返回的数据替换为除法的内容。这是代码:

    $(".filter_field").change(function() {
        $.post("/business/feedbacks/", $("#filter_form").serialize(),
            function(data) {
            $('#table-content').replaceWith($('#table-content', $(data)));
            });
    });

现在我用这种方法面临两个问题:

1) 我还使用了一个重置按钮,它只需将表单的字段值重置为初始值,然后触发如下代码中的更改事件:

      $('#filter_reset').click(function () {
            $(':input','#filter_form')
            .not(':button, :submit, :reset, :hidden')
            .val('')
            .removeAttr('checked')
            .removeAttr('selected');
            $(".filter_field").trigger('change');
      });

现在,每当我单击重置按钮时,它都会重置表单的字段,并通过上面描述的更改事件使用ajax提交表单。到目前为止还不错,但现在我再也无法触发更改事件了。现在,无论我现在点击表单中的哪个字段,它都不再使用ajax提交表单。

2) 我在#table内容部门安装了一个soundmanager插件(它的多个实例)。现在,在ajax提交之后,soundmanager插件停止工作,因为我认为,当soundmanager在就绪事件中加载时,它在ajax提交和replaceWith之后不会执行,因此它停止工作。

有没有绕过这些问题的解决方案?我是新来的,所以很抱歉,如果我做错了事情,请引导我朝着正确的方向前进。提前非常感谢。

编辑:事实证明,如果我包含$.getScript("/static/js/360player.js");它工作正常。难道没有一种方法可以使用jquery replaceWith命令将事件附加到替换的元素上吗?'On事件似乎根本不起作用。

伊迪丝2:原来我在一个错误的除法上用了on。我的缺点:(

当替换元素时,还将移除任何附加的事件处理程序。您需要使用委派将事件处理程序绑定到现有元素未来元素。。。

$("body").on("change", ".filter_field", function() {
    $.post("/business/feedbacks/", $("#filter_form").serialize(),
        function(data) {
        $('#table-content').replaceWith($('#table-content', $(data)));
        });
});

不确定你的第二个问题,但听起来也需要类似的方法。