2012-04-30 100 views
0

我似乎找不到一个正确的选择方式, 它应该只在DIV的背景上点击点击,并且在主图像上 - 如果有, ,但如果点击位于其他位置的其他元素在那个div--像一个hrefs等 - 它应该什么也不做。Jquery选择器点击背景+元素?

我尝试这样做:

$('#SHOWCASE, #SHOWCASE > img') 

陈列室 - 是DIV的ID和img是直接连接到它的图像。 但是,如果我添加.Click函数,它仍然触发该div中的任何元素,如链接等,请注意这些链接也具有绝对位置。

那么有没有解决方案呢?

+1

你能忍受的标记,因为你选择的ID它将使easer回答 – Qpirate

+0

这是如果你想让事件在特定元素上被触发,你可以给所有这些元素赋予一个类,并给它们以下事件:div()。等等.....}); –

回答

5

在最简单的方式,只是测试点击的元素是否是你绑定的处理程序的元素:

$('<selector>').click(function(event) { 
    if(event.target === this) { 
     // do something 
    } 
}); 

参考event.target

0

您需要停止该div中的其他元素冒泡。像jQuery的stopPropagation()应该可以做到这一点。将其添加到#SHOWCASE的所有孩子。

2

这是正常的行为,因为事件冒泡的DOM 。您应该检查targetevent object里面看到了什么元素原本点击:

$('#SHOWCASE').on('click', function (e) { 
    if ($('#SHOWCASE, #SHOWCASE > img').is(e.target)) { 
     // Only do something if it was those elements. 
    } 
}); 
0
$('#hello, #hello > img').on('click', function(e) { 
    if(e.target == this) { 
     console.log(this); 
    } 
});