2012-04-28 71 views
2

我正在嘗試使用.on()來告訴我在某個區域內部點擊了什麼。爲了捕捉我點擊的確切元素,我打電話event.stopPropagation(),以防止冒泡,但我的輸出總是#containerDiv及其內容。

我怎樣才能看到#containerDiv內點擊的內容?一個代碼片段如下:

$("#containerDiv").on("click",function(event){ 
    event.stopPropagation(); 
    console.log($(this)); 
}); 

回答

5

使用event.target,不$(this);後者將始終是處理程序分配的元素。

+0

@ jfriend00:我認爲只適用於委託的事件;這個案例不是一個。 – Ryan 2012-04-28 15:35:50

+1

Downvote取消。是的,那是真的。它適用於委託事件。 OP看起來像他們想要使用委託事件處理,但他們正在以手動方式進行。他們可以將實際對象的選擇器作爲'.on()'參數,然後他們不必手動使用'event.target'。 – jfriend00 2012-04-28 15:37:56

+0

@ jfriend00:的確如此。我應該知道我的答案中沒有足夠的jQuery。 ';)' – Ryan 2012-04-28 15:39:38

5

當您在容器上捕獲事件時,事件已經冒泡了

2

嘗試給on()方法selector

$("#containerDiv").on("click", "*", function(event){ 
    event.stopPropagation(); 
    console.log($(this)); 
}); 

演示:http://jsfiddle.net/SnPjS/2/

+0

作品!我還找到了另一種方式來做到這一點。 event.target不是event.stopPropagation,而是返回觸發處理程序的元素。 – devnill 2012-04-28 15:33:58