我有2個div元素。一個是孩子,一個是父母喜歡:親子活動
<div id="p">
<div id="c">
</div>
</div>
的parent
div有2事件附加click
和dblclick
和孩子div有1個事件附加click
。現在我的問題是,當我點擊child div
父母div單擊事件也執行。我試過e.stopPropagation();
,但仍然是相同的行爲。幫我 ?
我有2個div元素。一個是孩子,一個是父母喜歡:親子活動
<div id="p">
<div id="c">
</div>
</div>
的parent
div有2事件附加click
和dblclick
和孩子div有1個事件附加click
。現在我的問題是,當我點擊child div
父母div單擊事件也執行。我試過e.stopPropagation();
,但仍然是相同的行爲。幫我 ?
你一定是試錯了,因爲stopPropagation
應該在這裏做伎倆。確保你在子元素阻止事件的傳播:
$("#c").click(function (e) {
e.stopPropagation(); //Will prevent event bubbling to #p
});
這裏有一個working example。
唯一的例外上面是如果你已經綁定的live
方法的事件處理程序(你不應該因爲live
做的是不建議使用)。您無法停止live
事件的傳播,因爲事件處理程序綁定到文檔而不是元素,並且事件必須在執行之前一直傳播到文檔。
如果你使用舊版本的jQuery'.delegate()'會停止工作,並且stopPropagation也可以使用它。只是一個提示:) – rlemon
除了使用stopPropagation
之外,您還可以在處理事件之前檢查條件(event delegation方法)。這樣,您也可以使用live
事件處理程序(如果我是正確的,現在在jQuery中用on
代替)。見this fiddle
[編輯]:使用bind
,你只需要對所有一個處理程序,爲div#p
定義。提供的jsfiddle會相應地進行調整。
你能發佈你的javascript嗎?也許這是一個小錯字:) –