使用jQuery的load()方法获取已经初始化的javascript与加载的内容进行交互的适当方法是什么?
示例: 每个行都有一个带onclick事件的表,然后在表中追加()一行新行,突然onclick()事件不会触发。
希望可以通过将每个事件写入执行load()的代码手动重新初始化每个事件来实现此目的。
我看过$ .getScript,live()和bind() - 但还没有任何工作。在我进入反复试验的几个小时之前,我会感激一些指导。
答案 0 :(得分:2)
对于事件示例,您需要.live()
或.delegate()
,例如:
$("table").delegate("tr", "click", function() {
//do something, the table row is this, for example:
$(this).toggleClass("selected");
});
这样做是将事件处理程序附加到<table>
元素,该元素侦听bubble up的事件(无论何时添加它们都会执行哪些元素),如果元素为事件来自匹配选择器,在本例中为<tr>
。
或者它是一个父母未知的元素,请使用.live()
,如下所示:
$(".something").live("click", function() {
$(this).toggleClass("selected");
});
.live()
的效果非常相似(面对.delegate()
内部使用.live()
),它只是附加到document
,所以DOM中的父级更高。