我有这样一段代码:的ajaxSuccess不触发动态添加元素
$('.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(但链接工作)。
如果页面中已经有一些项目,我添加另一个项目,然后点击最新的项目来触发事件,警报“不是这一个!”。将触发现有元素,但不是新元素。
任何想法? ----编辑----- 我使用委托像这样:
$('#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建议!)
--- EDIT 2 ----- 如果我补充一点:
$('#lists').on('click', '.self_delete', function(event) {
alert('going to delete from click');
});
警报会被触发。在所有情况下。所以基本上,似乎.on()不能注册ajaxSuccess事件!我试图在谷歌上,但搜索与.on()相关的任何东西就像是想不到的不可能,它是如此常见的词:-S
这是什么.on()应该防止? – Alain