我在具有class“element”类的div中有一个锚点。在点击事件中使用stopPropagation
<div class="element logout">
<div class="subTop">
<a href="home.jsp" onclick="return confirm('Do you want to logout?');">Log Out</a>
</div>
</div>
我使用下面的代码来处理注销。
jQuery(".element").click(function(e){
var tmpHref=jQuery(this).not('.logout').find(".subTop>a").attr('href');
if(tmpHref!=undefined&&tmpHref!=""&&tmpHref!=null)
{
window.location.href=tmpHref;
}
else
{
jQuery(this).find(".subTop>a").click();
}
});
但我的问题是确认事件触发一次又一次。我认为这是因为它的传播。经过我的研究,我发现我可以使用this后的e.stopPropagation()
。但我无法弄清楚如何在这里使用它。
编辑 消息'您要退出吗?'在确认框是从数据库中动态获取的,所以我不能在代码中对其进行硬编码。
我认为你想根据'div class','logout'或'not'来重定向你的页面。如果'logout class'则是'logout.jsp',如果div没有'logout class',那么'home.jsp'。对? – 2013-03-18 08:13:19
你有一个无限循环 - 在else子句中单击()。首先修改你的逻辑--e.stopPropagation()或取消事件泡泡更糟糕的补丁 - 你的代码应该足够干净,可以在没有某种恶意行为的情况下正常退出。我确信这段代码可以重新编写得很干净 - 你能详细说明你正在努力完成什么吗? – 2013-03-18 08:16:04