jQuery-添加到html()的链接
我有一个div元素内部的链接。该链接有一个单击侦听器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(函数(){ $(“#链接”)
$(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的回答,这正是我的意图,再加上很棒的演示。