【问题标题】: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 节点的深层克隆,包括事件处理程序。这会很酷,因为它解决了这个问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-07-22
            相关资源
            最近更新 更多