【问题标题】:apply plugin to a new element in the DOM (jquery)将插件应用于 DOM (jquery) 中的新元素
【发布时间】:2009-12-18 06:26:54
【问题描述】:
我正在使用 jquery tablesorter 插件并将其应用于具有 id 的表:#table
我的搜索工具通过 ajax 请求结果并将该表替换为具有相同 ID 的新表
如果我的代码是这样的:
$('#table').tablesorter();
我要添加什么来使插件在新表上工作? (我知道 jquery 的直播活动,但是在这种情况下我该如何使用呢?
【问题讨论】:
标签:
javascript
jquery
ajax
【解决方案1】:
您必须在搜索请求完成后重新运行$('#table').tablesorter();。
$.ajax({
type: "POST",
url: "search.php",
data: "query=blabla",
success: function(html){
// replace old table with new table
// re-apply table sorter
$('#table').tablesorter();
}
});
【解决方案2】:
$.live() 在这种情况下不起作用。您需要在 ajax-success 之后手动将其重新应用到所有新表。
【解决方案3】:
你可以的
function newTable() { // or whatever...
var $table = $('<table />'); // create new table
$table.tablesorter();
};
【解决方案4】:
扩展 Q8-coder 所说的,您插入到 dom 中的任何内容(即使它之前存在)通常必须重新绑定到任何事件处理程序和函数。
据说 jQuery 制作(或正在制作)DOM 节点的深层克隆,包括事件处理程序。这会很酷,因为它解决了这个问题。