如何在JQuery中加载AJAX内容后触发事件处理程序

时间:2010-01-23 18:40:25

标签: jquery ajax tablesorter onload-event

我正在尝试使用AJAX请求使用JQuery将一些信息加载到表中。我可以轻松加载内容,但是在添加事件处理程序以在加载的内容上应用样式时遇到问题。

我正在向表中应用条带化小部件。但是,当我的AJAX请求返回并且我的信息被附加到表体时,它没有应用样式。

JQuery教程提到使用load事件来处理这个问题,但我无法让它工作。

任何帮助都将不胜感激。

$(document).ready(function(){
    $("#cowTable").tablesorter();
    addTableStriping();
});

function addTableStriping(){
    $("#cowTable").tablesorter({
        // striping looking
        widgets: ['zebra']  
    });
};

$(function(){
    $("#loadCowsButton").click(function(){
        $.post("loadCows.php", "scottm", function(xml) {
            $("#cowTable tbody").append(xml);
        });
    });
});

5 个答案:

答案 0 :(得分:2)

我找到了解决方案。您需要在更新后触发“applyWidgets”。感谢大家的帮助,没有你的帮助,我不会发现这个。

$(function(){
    $("#loadCowsButton").click(function(){
        $.post("loadCows.php", "scottm", function(xml) {
            $("#cowTable").append(xml);
            $("#cowTable").trigger("update");
            $("#cowTable").trigger("applyWidgets")
        });
    });
});

答案 1 :(得分:1)

您可能想尝试Livequery Plugin

Live Query利用jQuery选择器的强大功能,通过绑定事件或自动神奇地触发匹配元素的回调,即使在页面加载和DOM更新后也是如此。

答案 2 :(得分:1)

这是你应该做的:

tablesorter website上找到它。

它的长短是你应该在追加数据后调用$( "#cowTable" ).trigger( "update" );

答案 3 :(得分:1)

为什么不在AJAX回调中调用它?

$(function(){
    $("#loadCowsButton").click(function(){
        $.post("loadCows.php", "scottm", function(xml) {
            $("#cowTable tbody").append(xml);
            addTableStriping(); // <-- here
        });
    });
});

答案 4 :(得分:0)

这应该这样做..

$(function(){
    $("#loadCowsButton").click(function(){
        $.post("loadCows.php", "scottm", function(xml) {
            $("#cowTable tbody").append(xml);
            $("#cowTable").trigger( "update" );
        });
    });
});