div里个span元素,都有onclick事件。点击只响应其中一个应该怎么做?给点思路。

就是在div里的空白处点击,响应div的onclick事件,在span里的内容上点击,响应span的onclick事件。帮帮忙啊,急用。

我的网站也遇到过这个问题,我是这样处理这个问题的。做了个判断,代码如下:
<script>
var n=0;
function a(){n=1;}//点span,让n=1,触发div点击时判断n是否等于1
function b(){
if (n==1){alert("你点击了span");}else{alert("你点击了div")}
n=0;
}
</script>
<div style="width:300px;height:200px;border:1px solid #cccccc;" onclick="b();">
<span style="float:left;margin:20px;padding:20px;;background:#cccccc;" onclick="a();">1111111</span>

</div>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-29

假如我要点击span但不要把事件往上传到button,

在子控件逻辑处理加个event.stopPropagation();用于阻止冒泡

<button type="button" class="btn btn-xs btn-warning" onclick="tag_search()">
<span class="glyphicon glyphicon-tags" aria-hidden="true"></span>Python
<span class="label label-danger" onclick="delete_tag()">X</span>
</button>

function tag_search(){
console.log("tag_search");
}

function delete_tag(){
console.log("delete_tag");
//阻止冒泡上层click
event.stopPropagation();
}

本回答被网友采纳
第2个回答  推荐于2017-11-26

div 是span的父级 所以会有冒泡事件  

var divObj = document.....// 获取div对象
div.onclick = function(){
    if (this.tagName == 'span') {
        //  执行span的方法
    } else if (this.tagName == 'div') {
        //执行div的事件
    }
}

大致思路如此

本回答被提问者采纳
相似回答