2

我的网站上有一个“命令中心”栏,其中有一个登录/注销按钮、一个我的帐户按钮和一个消息按钮。如果用户未登录,则命令中心仅显示登录按钮。如果用户已登录,命令中心会显示注销、我的帐户和消息按钮。

当用户登录或注销时,我使用 jQuery AJAX 刷新命令中心。因此,当用户登录时,他/她的信息会发布到 php 页面,并且回调函数会刷新命令中心。我有另一个 jQuery AJAX 函数,当它感应到单击注销按钮(仅在用户登录后出现)时,它会发布到一个将用户注销的 php 页面。

由于注销按钮是通过 AJAX 加载的,并且我的注销功能在初始页面下载时加载,因此即使该功能引用注销按钮的 ID,注销功能也不会响应点击注销按钮。

让我的注销功能识别加载 AJAX 的注销按钮的最佳方法是什么?我最初的想法是在命令中心 div 上使用 mouseover 事件来封装我的注销功能,以便在用户登录并将光标移动到 AJAX 加载的命令中心后,该函数会根据当前的 HTML。缺点是每次用户将鼠标悬停在命令中心上时都会调用该函数,即使他们不想注销也是如此。

有没有更直接的解决方案?

4

2 回答 2

3

你想要做的是使用jQuery的on()功能。

代码可能如下所示:

$('body').on('click', '#log-out-button-id', function(){
    // logout code
});

本质上,您将事件附加到页面上不会更改的元素。出于性能原因,您应该尽可能使用最接近的稳定父元素。(在你的情况下,这可能是'#command-center'.

于 2013-03-14T15:29:15.597 回答
2

您可以在(或者更确切地说,在您的命令中心)上使用 jQuery.on函数body,将您的注销按钮作为选择器传递。这样,只要该按钮存在,它就会执行 - 无论它已经存在还是将来添加:

$("body").on("click", "#logout", function(event){
    // Your code
});
于 2013-03-14T15:29:32.590 回答