我有这段代码:
$('.self_delete').on('ajaxSuccess', function(event, xhr, settings) {
json = jQuery.parseJSON(xhr.responseText);
if ($(this).attr('href') == json.delete_url ) {
alert('going to delete');
$(this).closest($(this).data('parent-selector')).remove();
} else {
alert('not this one!');
}
});
这对于页面上已经存在的元素非常有效。但是当我动态添加新元素并单击 .self_delete 元素时,它不会触发 ajaxSuccess (但链接有效)。
如果页面中已经有几个项目,我再添加一个,然后点击最新的一个来触发事件,警报“不是这个!” 将为现有元素触发,但不会为新元素触发。
有任何想法吗?----EDIT----- 我像这样使用委托:
$('#lists').on('ajaxSuccess', '.self_delete', function(event, xhr, settings) {
json = jQuery.parseJSON(xhr.responseText);
if ($(this).attr('href') == json.delete_url ) {
alert('going to delete');
$(this).closest($(this).data('parent-selector')).remove();
} else {
alert('not this one!');
}
});
现在该事件永远不会触发,即使页面重新加载也是如此。但是选择器很好,因为 $('#lists .self_delete') 确实返回了 a.self_delete 的数组!(去睡觉了,希望醒来的时候有人给点建议!thx!)
---编辑2-----如果我添加这个:
$('#lists').on('click', '.self_delete', function(event) {
alert('going to delete from click');
});
警报会触发。在所有情况下。所以基本上,似乎 .on() 无法注册 ajaxSuccess 事件!我试图用谷歌搜索,但搜索与 .on() 相关的任何内容就像错过了不可能,这是一个常见的词:-S