Jquery事件不会触发通过load()加载的内容

时间:2010-10-05 14:14:08

标签: javascript ajax jquery

使用jQuery的load()方法获取已经初始化的javascript与加载的内容进行交互的适当方法是什么?

示例: 每个行都有一个带onclick事件的表,然后在表中追加()一行新行,突然onclick()事件不会触发。

希望可以通过将每个事件写入执行load()的代码手动重新初始化每个事件来实现此目的。

我看过$ .getScript,live()和bind() - 但还没有任何工作。在我进入反复试验的几个小时之前,我会感激一些指导。

1 个答案:

答案 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中的父级更高。

相关问题