我已经阅读了 live()(现在已经从 jQuery 中删除)、delegate() 和 on() 的所有文档。在用这个问题打了自己八个小时之后,我不知道如何解决它。我想向一堆链接添加一个匿名函数,这些链接是从通过 AJAJ 引入的数据创建的。我试过以下代码:
$("#more_items_outer").on(
'click',
'.show_more',
function(a){
var target = a.parentElement;
if (target.is(":visible")){
target.hide("slow");
} else {
target.show();
}
}
);
页面加载后,当我在开发浏览器的 JS 控制台中运行此代码时,它运行良好。但是,如果此代码在创建实际链接之前运行,则对这些链接没有任何作用。据我了解(以及作为多个来源,包括官方 jQuery 文档,对其进行描述),我在上面的代码中使用的 on() 函数应该可以使创建的类“show_more”的任何元素作为 id 为“more_items_outer”的任何元素的后代,在单击它时将执行匿名函数。即使新元素的创建晚于此代码的执行,这也应该是正确的。这在我的开发系统上并没有发生,我很清楚为什么会这样。如果有帮助,我正在运行 jQuery 1.9.1。