在开发过程中,明明调试好的阻止冒泡没有问题,但是真正使用 时候发现阻止冒泡失效了,原来原因是点击事件里依赖了异步返回结果。
<div class="aa notice">
<div class="bb notice"></div>
</div>
<script>
var arr = document.getElementsByClassName("notice");
for(let i of arr){
i.addEventListener("click",function (e) {
console.log("i",i)
// 阻止冒泡
const ev = e || window.event;
if (ev && ev.stopPropagation) {
//非IE浏览器
ev.stopPropagation();
} else {
//IE浏览器(IE11以下)
ev.cancelBubble = true;
}
})
}
</script>
<div class="aa notice">
<div class="bb notice"></div>
</div>
<script>
var arr = document.getElementsByClassName("notice");
for(let i of arr){
i.addEventListener("click",function (e) {
console.log("i",i)
doReport(reportList, timeout).then(() => {
// 阻止冒泡
const ev = e || window.event;
if (ev && ev.stopPropagation) {
//非IE浏览器
ev.stopPropagation();
} else {
//IE浏览器(IE11以下)
ev.cancelBubble = true;
}
})
})
}
</script>
doReport是一个上报方法,这里要等待上报完成之后再执行点击逻辑,会导致阻止冒泡失效。
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,下面我们来看一下JavaScript如何设置按钮不可点击。
通过设置元素的pointer-events属性设置为none,来实现元素不可点击。此方法是通过设置元素的鼠标事件失效来实现元素不可点击。
工作中,做了一个dropdown。在form-select::after里加了一个向下箭头的背景,可是点击箭头时,无法触发dropdown事件
这个问题怎么解决呢?简单点,使用一个lock标记,在请求发出时上锁,上锁后就不可以再发请求,可以在请求结束后解锁:
在页面开发过程中常常遇到需要动态添加元素,然后给这一元素绑定相关事件的情况,这种情况下一般需要给元素加上相关属性,然后写这些元素的事件函数即可。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!