2012-04-28 100 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