2010-04-18 26 views
1

我有一个网站有一些需要通过AJAX动态加载内容的容器。Jquery AJAX和搞清楚如何不嵌套回调多个重新加载。

容器内的大多数链接实际上都在同一个容器中加载新数据。

IE:$("#navmenu_item1").click(function() { $("#navmenu").load(blah); });

当我点击一个链接,可以说,“注销”,并与更新的登录状态菜单重新加载,没有任何链接的现在的工作,因为我需要一个新的.click加入到回调代码。

现在,随着重复点击和AJAX请求,我不知道如何从这里前进,因为我确信嵌套回调不是最优的。

这样做的最好方法是什么?

我是否将实际的AJAX文件中的.click事件包含在从服务器中取出,而不是在index.php中? 或者我可以以某种方式重新加载DOM?

感谢您的帮助!

回答

1

您正在寻找.live function,它将处理匹配选择​​器的所有元素的事件,而不管它们是什么时候创建的。

+0

SLaks也是正确的和/或具有相同特性但可以链接的委托功能。 – XGreen 2010-04-18 15:26:39

1

既然你重装一个特定的元素,你可以存储在那里使用.delegate()像这样的事件侦听器:

$("#navmenu").delegate("#navmenu_item1", "click", function() { 
    $("#navmenu").load(blah); 
}); 

这是通过监听点击冒泡的#navmenu元素和执行任何处理与选择器匹配。 .delegate()格式是.delegate(selector, event, handler)

既然你加载#navmenu,实际的元素上的事件处理程序不会吹走就像他们在被替换里面的孩子做,所以现在点击会为当前或未来的元素在里面工作#navmenu