【发布时间】:2013-03-18 07:54:27
【问题描述】:
我在一个带有“元素”类的 div 中有一个锚点。
<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。对吗? -
你有一个无限循环 - click() 在 else 子句中。首先修改你的逻辑 - e.stopPropagation() 或取消事件气泡更像是一个糟糕的补丁 - 你的代码应该足够干净,可以在没有某种黑客行为的情况下优雅地退出。我确信这段代码可以非常干净地重写 - 你能详细说明你想要完成的事情吗?
标签: jquery events stoppropagation