我正在开发一个使用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类并调用此函数”,而无需独立初始化每个链接。
答案 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活动之后重新声明。