Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我们为元素设置新的html时,如何保存事件处理程序?_Javascript_Jquery_Events - Fatal编程技术网

Javascript 当我们为元素设置新的html时,如何保存事件处理程序?

Javascript 当我们为元素设置新的html时,如何保存事件处理程序?,javascript,jquery,events,Javascript,Jquery,Events,我有简单的html标记: <div id="cont">Some text here <div class="wrap" style="border: 1px solid black;display: inline;"> block element here </div> and another text</div> 我希望单击事件将在您被d1 div单击时触发,但当我们单击时。将其包装以避免再次触发。我理解它为什么会有这样的行为,但如何

我有简单的html标记:

<div id="cont">Some text here
  <div class="wrap" style="border: 1px solid black;display: inline;"> block element here
  </div> and another text</div>
我希望单击事件将在您被d1 div单击时触发,但当我们单击时。将其包装以避免再次触发。我理解它为什么会有这样的行为,但如何解决呢? 在我的代码中,我不能在$cont.html$cont.html.replace/text/g之后设置d1的单击事件,因为如果设置了事件,我现在不会在执行时设置。 你可以试试这个例子

感谢回复,这是一个非常有用的函数。

您应该使用该方法绑定

您应该使用该方法进行绑定

演示:

如果不确定元素的状态,则始终可以使用live绑定事件:

$(function(){
    $(".wrap").live('click', function(){
        $("#cont").html($("#cont").html().replace(/text/g, "letter"));
        alert("Click!");
    });
    $("#d1").live('click', function(){
        alert("#d1 clicked!");
    });
});
与绑定的事件仍将应用于最初调用代码后找到的实例

演示:演示:

如果不确定元素的状态,则始终可以使用live绑定事件:

$(function(){
    $(".wrap").live('click', function(){
        $("#cont").html($("#cont").html().replace(/text/g, "letter"));
        alert("Click!");
    });
    $("#d1").live('click', function(){
        alert("#d1 clicked!");
    });
});
与绑定的事件仍将应用于最初调用代码后找到的实例


演示:

正如GvS所说,绑定事件。当您不需要它时,您可以解除绑定。

正如GvS所说,绑定事件。当您不需要它时,可以解除绑定。

是否可以将.live和.one事件设置器合并?我想使用.live设置事件处理程序,但它只能启动一次。@Kai不确定,但您可以将$this.die“click”放在处理程序函数的末尾。我从@Nick Craver这里找到了很好的解决方案-是否可以将.live和.one事件设置器组合起来?我想使用.live设置事件处理程序,但它只能启动一次。@Kai不确定,但您可以将$this.die“click”放在处理程序函数的末尾。我从@Nick Craver这里找到了很好的解决方案-
$(function(){
    $(".wrap").live('click', function(){
        $("#cont").html($("#cont").html().replace(/text/g, "letter"));
        alert("Click!");
    });
    $("#d1").live('click', function(){
        alert("#d1 clicked!");
    });
});