![](/img/trans.png)
[英]Using jquery append() puts the appended content outside of the appended background
[英]jQuery events for appended content using .on?
我已将内容(使用ajax)附加到我的文档中,并且我的事件未触发。 我知道这可以使用.live()来完成,但我在某处读到它现在已被弃用了?
这是我的代码(它可以在文档就绪时正常工作,但不能在新添加的项目上工作):
$('li[id^="inv-"] a.close').on('click', function(){
var item=($(this).closest("li[id^='inv-']")).attr('id');
var id = parseInt(item.replace("inv-", ""));
$.ajax({
type: "POST",
url: "ajax-invi.php",
dataType: "html",
data: "id="+idboda+"&idinv="+id+"&borrar=ok",
success: function(data) {
noty({"text":"El invitado ha sido borrado"});
$("body").find('li#inv-' + id).remove();
}
});
});
和项目:
<ul>
<li id="inv-39">
<div class="row_field">
<label>Adri</label>
<a class="close" href="#invlist">Borrar</a>
</div>
</li>
<li id="inv-40">
<div class="row_field">
<label>Marga</label>
<a class="close" href="#invlist">Borrar</a>
</div>
</li>
</ul>
尝试
$('ul').on('click','a.close', function(){
var item=($(this).closest("li[id^='inv-']")).attr('id');
var id = parseInt(item.replace("inv-", ""));
$.ajax({
type: "POST",
url: "ajax-invi.php",
dataType: "html",
data: "id="+idboda+"&idinv="+id+"&borrar=ok",
success: function(data) {
noty({"text":"El invitado ha sido borrado"});
$("body").find('li#inv-' + id).remove();
}
});
});
通过这种方式,您可以将事件处理委托给加载DOM时存在的ul,并处理通过AJAX添加的元素的事件。 如果在加载dom时不存在ul,则可以委托<body>
标记
编辑 - live()它实际上是on()
的包装(在它是delegate()
的包装之前),但通常将事件处理委托给window
,这意味着事件必须冒出很多。 取自jQuery源码
live: function( types, data, fn ) {
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
},
$(document).on('click', 'li[id^="inv-"] a.close', function(){
//...
});
因此,您将事件追加到某个父元素,该元素查找页面加载时存在的兄弟元素,以及将来添加的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.