jQuery-添加到html()的链接

jQuery-添加到html()的链接,jquery,Jquery,我有一个div元素内部的链接。该链接有一个单击侦听器 $(document).ready(function() { $('#theLink').click(function() { // do stuff }); }) <div id="myElement"><a class="myLink" id="theLink">Click here</a></div> $(文档).ready(函数(){ $(“#链接”)

我有一个div元素内部的链接。该链接有一个单击侦听器

$(document).ready(function() {
    $('#theLink').click(function() {
        // do stuff
    });
})

<div id="myElement"><a class="myLink" id="theLink">Click here</a></div>
$(文档).ready(函数(){
$(“#链接”)。单击(函数(){
//做事
});
})
点击这里
在我的应用程序中的某个时刻,我必须清除div元素的内容,然后在以后重新写入它们。当我使用.html(“”)重写链接时,我丢失了click侦听器,链接无法工作

$('#myElement').html(''); // clear element

$('#myElement').html('<a class="myLink" id="theLink">Click here</a>');
$('#myElement').html('')//清晰元素
$('#myElement').html('单击此处');
我是否需要添加新的侦听器才能使此链接再次工作?

您可以使用并指定链接的容器,以便在删除并再次添加链接后让其进行侦听

编辑:您可以在他们的网站上阅读以下方法。请参见“直接和委托事件”一节

看这里

像下面这样的东西应该可以用

$('#myElement').on('click', '#theLink', function() {
  alert('HI!');
});
我认为jQuery在内部执行如下操作:

$('#myElement').click (function (e) {
    if (this.id == 'theLink') {
       alert('Hi!');
       e.stopPropogation();           
    }
});

您可能应该使用函数(jquery1.7+)。这将允许您将单击事件绑定到元素,而不管您添加和删除它多少次

例如:

$("#theLink").on("click", function(event){
    //do stuff;
});
更新:对于早于1.7的jQuery版本,请使用或(取决于确切的jQuery版本)。同样的语法也适用。

我认为

$('#myElement').children('id!="myLink"').remove()

应删除容器div的所有子级(链接除外)。但是,我不确定children()中的选择器表达式的格式是否正确,因此可能会导致语法错误。如果是,请评论,我将编辑答案。

使用
.live()
.on()
而不是
。单击()
@ShadowWizard这不是评论,因为它是答案:)为什么必须销毁元素?为什么不直接隐藏/显示它呢?即使像
on()
live()
这样的方法允许您使用+1@ShadowWizard,持续销毁并重新创建同一元素也是没有意义的。我尝试使用.on()但没有成功,但是.live()工作得很好,谢谢。干杯@Ahmet and Martin。。请随意接受SKS的回答,这正是我的意图,再加上很棒的演示。