jQuery e.stopPropagation与body onclick冲突

时间:2016-03-15 04:57:58

标签: javascript jquery twitter-bootstrap

我有自举下拉菜单。为了让它在点击内部下拉列表中继续显示,我将其设置为像这样的

$('.dropdown-menu').click(function(e)
{
     e.stopPropagation();
});

有效。那么现在我有

$(document).ready(function() 
{
     $('body').on("click",'#btn_post',function(e)
     {
          alert("waw");
     }
});

<button class="btn btn-default" id="btn_post">Click</button>

当我点击按钮时,我无法看到警告&#34; waw&#34;。但是当我删除e.stopPropagation();时,警报就会出现。

我希望2个函数可以无冲突地运行。

1 个答案:

答案 0 :(得分:1)

而不是使用stopPropagation使用preventDefault它可能会解决您的问题。

stopPropagation用于确保事件不会在链中冒泡。例如。点击<td>代码也可以点击其父级<tr>上的点击事件,然后点击其父级<table>等,stopPropagation可以防止这种情况发生。

preventDefault用于停止元素的正常操作,例如。链接上的点击处理程序中的preventDefault会停止跟踪链接,或者在提交按钮上会停止提交表单。

了解更多详情event.preventDefault vs event.stopPropagation