2013-07-14 27 views
0

我有多個div上市,像這樣:stopPropagation沒有與嵌套href標記工作

<div class="msg-list clearfix" id="27705"> 
    <div class="thumbnail_image"> 
    <a href="some_path">AnchorText</a> 
    </div> 
    <div class="msg-date">DATA</div> 
</div> 

我一直試圖趕上父DIV點擊事件,但點擊HREF元素,當我點擊的事件也越來越而不是僅僅關注點擊的鏈接。

這裏是我的jQuery的電話:

//$(".msg-list a").click(function(e) { 
$(".msg-list").click(function(e) { 

    e.stopPropagation(); 
    alert("Handler for .click() called."); 
}); 

任何想法,我缺少的是什麼?

回答

1

嘗試:

$(".msg-list").on('click', function(e) { 
    alert("div handler"); 
    return false; 
}); 
$(".msg-list a").on('click', function(e) { 
    alert("a handler"); 
    e.stopPropagation(); 
}); 

這是你想要的嗎? http://jsfiddle.net/L5kC4/2

+0

這就是目前發生的情況。我試圖忽略單擊事件,當單擊錨文本時,只需按照鏈接而不是 – Paul

+0

在這種情況下,爲每個元素添加一個處理程序。在'a'處理程序中,如果你不返回false,你將被重定向到href。 –

+0

這樣做的伎倆......我不得不打電話給(.msg-list .thumbnail_image a)stopPropagation謝謝! – Paul

0

點擊事件與其他任何事件一樣使用Bubbling(http://en.wikipedia.org/wiki/DOM_events)分派給元素,因此任何被點擊的內部元素都將觸發所有父元素(另一種方式稱爲「隧道效應」)。

你必須把對錨元素onclick事件的stopPropagation或放在元素:

onclick="return false;" 
0

爲了使DIV中的鏈接,使用這個JavaScript。您必須在包含的元素上禁用傳播,鏈接!

$(".msg-list a").click(function(e) { 
    e.stopPropagation(); 
}); 
$(".msg-list").on('click', function(e) { 
    alert("Handler for .click() called."); 
}); 
+0

當我這樣做時,第二個電話永遠不會到達... – Paul

+0

我以爲這是你的意圖?除非點擊鏈接,否則您不想調用div **上的點擊事件嗎?在這種情況下,應該遵循鏈接目標? –

+0

另外,我在JS中有一個小錯誤。在第三行中,);失蹤。 –