div中包含span,并且都绑定了点击事件,点击出发的一直是div的点击事件,这个怎么解决

zsl2016 发布于 2016/09/13 15:51
阅读 1K+
收藏 0

如图这个是用js动态拼接的,代码如下

var div = document.createElement("div");
div.setAttribute("id", data.sys_id);
div.setAttribute("class", "defaultclass");
div.innerHTML = data.sys_id;
var spanON = document.createElement("span");
            spanON.setAttribute("class","spanclass");

            spanON.innerHTML = "M";

        div.appendChild(spanON); 

$("#" + data.id).find("span").attr("onclick",spanclick(spanON));

不管是点击div还是点击span一直都是触发div的click事件,大神们看下要怎么解决





加载中
1
Asdybing
Asdybing
http://blog.csdn.net/abb_chen/article/details/49406649 ;看下这个可能对你有帮助
zsl2016
zsl2016
这个事件冒泡是之后遇到的问题,您的答案对我帮助很大
0
yanInsert
yanInsert
你应该设置下位置,同时设置层叠就可以区分了。
zsl2016
zsl2016
层叠的方法试过了,没有达到想要的效果,不过已经解决了
0
Tumblr
Tumblr
搜索关键字“js 阻止冒泡”
zsl2016
zsl2016
非常谢谢
0
潘-C
潘-C

可以去看看js的事件驱动

zsl2016
zsl2016
多谢帮助,已经结觉
0
wuyiw
wuyiw


1, div赋值的id是data.sys_id, 但是下面取值用了$("#" + data.id), 是不是打错了?

2,你想拼接后在jq里选中span, 用$(spanON)即可, 没必要用$("#" + data.id).find("span")


3, .attr("onclick",spanclick(spanON));这个写法是错误的, 程序会马上执行spanclick(spanON)然后将返回结果赋给onclick属性, 正确写法应该是

$(spanON).click(function() {
  spanclick(this);
  // 如果不想触发div点击, 就return false;
  // return false;
});


zsl2016
zsl2016
是的,那个是写错了的,已经改好
返回顶部
顶部