当我将点击添加到某些div时,我可以在Chrome控制台中打印出$(this)
,然后我会在那里显示jquery对象。
http://jsbin.com/iyozap/1/edit
但是,我试图只获取被点击的最顶端的dom节点。所以我想在函数
中使用stopPropagation()
$(document).ready(function(){
$('body').on('click', '*', function(){
console.log($(this));
});
});
但每当我将事件传递给函数时
$('body').on('click', '*', function(event){
我将$(this)
打印到控制台[object Object]
。同样奇怪的是,当我随后从函数中删除event
和event.stopPropagation()
时,控制台仍会打印[object Object]
。
我只是试图在身体的每个部分上注册一个点击,除非它出现在具有类avoid
的div上,但我似乎没有抓住jquery event
及其对应物stopPropagation()
。当$(this)
传入时,[object Object]
如何从我可以看到的jquery对象变为event
?如何使用它来仅记录我的avoid
类中未发生的点击?
答案 0 :(得分:2)
$("body").on('click', '*' ...
委托每个元素。我想你只想这样做:
$("body").on('click', '.avoid', function (e) {
e.stopPropagation();
}).on('click', function () {
console.log('body clicked');
});
答案 1 :(得分:0)
您走在正确的轨道上,您只需将stopPropagation()
绑定到特定事件,如下所示:
$(document).ready(function(){
$('body').on('click', '*', function(e){
console.log($(this));
e.stopPropagation();
});
});
其中e
是事件对象。现在工作正常。这是一个更新的jsbin:
http://jsbin.com/iyozap/9/edit
答案 2 :(得分:0)
我认为他也想识别点击的对象
$(document).ready(function(){
$('body > *').click(function(){
console.log( $(this) );
});
});