关于ul点击事件委托给li时的鼠标拖动问题
网上查看后发现Click可以被两个事件触发:mouseUp与mouseDown,即点击和松开时都会触发一次。
随后当我从一个li点击拖动到其他li松开时,触发的事件对象因为冒泡变成了父元素ul,并非我们想要的当前触发对象li。在ul点击事件时添加触发事件对象判断即可:
var majorContentDown = document.querySelector(".majorContentDown");//获取ul
var major = document.querySelector("#major");//获取input
function clickLi(obj, whosValue) {
obj.addEventListener('click', function (e) {
if (e.target === obj) {
whosValue.value = "请勿拖动";
}
else {
whosValue.value = e.target.innerHTML;
whosValue.style.color = "black";
}
}, false);//允许冒泡
}
clickLi(majorContentDown, major);
以上是我在搞学年设计时,利用事件冒泡将点击的li中的innerHTML给到表单input中,正常点击是没问题的,调试时发现拖动后事件触发对象不是鼠标松开所在的li,JS将ul中的内容全给了input。github使用不熟练,就将遇到的问题及解决过程记录在博客园。菜鸟成长中