Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 引用AJAX加载的DIV ID_Jquery_Ajax - Fatal编程技术网

Jquery 引用AJAX加载的DIV ID

Jquery 引用AJAX加载的DIV ID,jquery,ajax,Jquery,Ajax,我的网站上有一个“命令中心”栏,上面有一个“登录/注销”按钮、一个“我的帐户”按钮和一个“消息”按钮。如果用户未登录,则命令中心仅显示登录按钮。如果用户已登录,则命令中心将显示“注销”、“我的帐户”和“消息”按钮 我使用jqueryajax在用户登录或注销时刷新命令中心。因此,当用户登录时,他/她的信息会发布到php页面,回调函数会刷新命令中心。我有另一个jqueryajax函数,当它感觉到单击注销按钮(仅在用户登录后出现)时,它会发布到一个php页面,该页面将用户注销 由于注销按钮是通过AJA

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

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

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

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


有更直接的解决方案吗?

您要做的是使用jQuery的函数

代码可能如下所示:

$('body').on('click', '#log-out-button-id', function(){
    // logout code
});
本质上,您将事件附加到页面上不会更改的元素。出于性能原因,应尽可能使用最接近的稳定父元素。(在您的情况下,这可能是
“#命令中心”

您可以在
主体上使用jQuery函数(或者更狭义地说,在您的命令中心上),将您的注销按钮作为选择器。这样,无论该按钮是否已经存在或将来添加,它都将在该按钮出现时执行:

$("body").on("click", "#logout", function(event){
    // Your code
});

是的,事件委派。正如jjnguy所说:不要使用总是停留在页面上的最近的节点,而使用
$('body')
。在您的情况下,
$('#命令中心')
可能是正确的选择。