基于AJAX的页面需要重复的javascript操作

时间:2011-07-21 11:23:33

标签: javascript jquery ajax

我正在开发一个使用JQuery布局并仅加载网站部分(如Gmail)的应用程序。每次我使用JQuery加载“面板”时,我必须替换一些链接以使其与面板一起使用(即,在面板中加载此链接内容,而不是在整个页面中)。是这样的:

function changeMainPane(href) {
    $("#screen").load(href);
    $("#screen a.ajax-page").click(function () {return
        changeMainPane($(this).attr("href"))
    });
}

这是一个非常简化的 changeMainPane 函数,我有几十个 $(“#screen ...”)。click()调用整合新的一块HTML进入页面。

问题是:还有更好的方法吗?类似的东西:

$("#screen").ready(function() {
    // All my html setups
}

或类似“总是用户点击链接,检查是否具有ajax-page类并调用此函数”,而无需独立初始化每个链接。

2 个答案:

答案 0 :(得分:2)

您可以查看delegate方法。可以为要重新加载主面板的所有链接的公共父元素注册委托方法。它可以是document对象,也可以是较低级别的元素,例如"body"或其他div,例如"div.mylinks"

$(document).delegate("a.ajax-page", "click", function(){
    changeMainPane($(this).attr("href"))
})

答案 1 :(得分:1)

也许jQuery live()正是您所寻找的。你这样使用它:

$("#screen a.ajax-page").live('click', function () { whatever; });

然后你不需要在ajax活动之后重新声明。