div中丢失了javascript选项(div刷新后)

时间:2018-08-29 14:09:25

标签: javascript jquery

点击该DIV中的按钮后,我可以选择刷新该DIV

<div class="col-md-12" id="reloadedit" >
    <div class="block">
        <div class="block-header block-header-default">
             <h3 class="block-title">Edit Language</h3>
        </div>
        <div class="block-content" >
        <?php
        DoThisFunction($link);
        ?>
        </div>
  </div>
</div>
</div>

我还创建了一个简单的函数来刷新div:

<script>
function updateDiv()
{ 
    $("#reloadedit").load(location.href + " #reloadedit>*", "");
}
</script>

该DIV中的所有内容都是PHP生成的。 该功能效果很好,并使用更新的功能刷新了DIV。

我有2个问题:

  • 第一次刷新后,div中的任何按钮均不起作用。基本上,我单击一个执行任务的按钮(例如,激活ID X)。它会处理一切正常并刷新div并显示为活动状态。如果我再次单击该按钮(以禁用),它什么也没做。 (请注意,这些操作是通过sweetalert和jquery调用进行的。)。

  • 如何制作通用函数,以便每次需要刷新div(例如使用updateDIV("#DIVNAMEHERE"))时都可以调用它?

谢谢。

编辑: 我获得按钮点击的代码是:

$("button").click(function() {
let button = $(this); // the button you clicked
let id = button.data("id"); // the data-id attribute of the button
let func = button.data("function");
if(func == "publish"){
    Publish(id);
}
});

1 个答案:

答案 0 :(得分:1)

刷新div中的内容时,您将删除附加到其中元素的所有事件侦听器。

由于您要处理动态内容,因此需要使用event delegation

更改事件处理程序:

$("button").click(function() {
    //Code
});

为此格式:

$('#reloadedit').on( "click", "button", function(e) {
    e.preventDefault();
    //Code
});

button内的任何div被单击时,这将触发点击事件处理程序。