Javascript 当我只定义了父div';s点击功能
这是我的代码:Javascript 当我只定义了父div';s点击功能,javascript,jquery,html,click,Javascript,Jquery,Html,Click,这是我的代码: <div id="a" style="position:absolute;width:200px;height:200px;background:red;word-wrap:break-word;"> <div id="b" style="width:50px;height:50px;background:blue;"></div> </div> 我想在单击红色div而不是蓝色div时发出警报 演示如下:
<div id="a" style="position:absolute;width:200px;height:200px;background:red;word-wrap:break-word;">
<div id="b" style="width:50px;height:50px;background:blue;"></div>
</div>
我想在单击红色div而不是蓝色div时发出警报
演示如下:
谢谢使用
event.preventDefault()
测试
e.target
的ID
示例:
另一个选项是向调用e.stopPropagation()
的#b
元素添加一个单击处理程序,但我不推荐这样做。有比仅仅为了停止传播而分配处理程序更好的方法(如上面的方法)
编辑: 运行上述测试的另一种方法是直接比较元素,而不是使用其ID: 示例:
如果像这样使用
event.stopPropagation()
,它可以工作:
$( "#b" ).draggable({ containment: 'parent' }).click(function(e){ e.stopPropagation(); });
$('#a').click(function(e){
alert(e.pageX);
})
在这种情况下,
preventDefault()
方法没有帮助。这用于防止元素的默认行为,例如链接。
元素没有默认行为:o) 我用操作代码在jsFiddler上试过了。似乎不起作用。@patrick你是对的,我明白了,你的代码正在起作用,谢谢你,默认在这种情况下不起作用,请参阅patrick解释,divs不会有任何默认行为。投票通过。这正是我要发布的内容。
http://api.jquery.com/event.preventDefault/
$('#a').click(function(e){
if( e.target.id === 'a' ) {
alert(e.pageX);
}
//return false;
});
if( e.target === this ) {
alert(e.pageX);
}
e.preventDefault();
e.stopPropagate();
$( "#b" ).draggable({ containment: 'parent' }).click(function(e){ e.stopPropagation(); });
$('#a').click(function(e){
alert(e.pageX);
})