jQuery在ajax调用后绑定函数和触发器

时间:2011-10-14 08:06:29

标签: ajax function jquery eventtrigger

function bindALLFunctions() {
  ..all triggers functions related go here
};


$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions();
        },
        dataType: 'html'
});

我是ajax和JQuery的新手。 我在js-jquery代码中有上面的ajax调用。 bindALLFunctions(); 用于在ajax调用之后重新调用所有触发器和函数。它按预期工作得很好。但是,我已经阅读了一些在初始操作完成后加载某些内容更好的地方,所以我尝试添加/编辑以下两个而没有任何成功。 有什么想法吗?

1) ->    $(".incContainer").html(data, function(){
                                          bindALLFunctions(); 
                                        });

2) ->    $(".incContainer").html(data).bindALLFunctions();

3 个答案:

答案 0 :(得分:1)

也许您应该查看livedelegate函数。您可以在应用程序的开头设置一个唯一的事件处理程序,所有加载的ajax代码将自动绑定:

$("table").delegate("td", "hover", function(){
    $(this).toggleClass("hover");
});

但如果您更喜欢使用Jquery.ajax调用,则必须执行以下操作:

$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions(".incContainer");
        },
        dataType: 'html'
});

并将bindALLFunctions转换为:

function bindALLFunctions(selector) {
  ..all triggers functions related go here. Example:
  $('#foo', selector).bind('click', function() {
     alert('User clicked on "foo."');
  });
};

只会绑定给定选择器下的事件。

答案 1 :(得分:0)

您的初始代码很好。新版本不起作用,因为html()函数没有回调函数。

答案 2 :(得分:0)

很难从你的问题中看出你打算提出什么问题,但我的猜测是你想了解ready函数。它可以让你在文件可用后调用你的bindALLFunctions;只需$(document).ready(bindALLFunctions)$(document).ready(function() { bindALLFunctions(); })