html点击某块区域触发条件,三种方法教你HTML实现点击某一个元素之外触发事件...

本文介绍了如何在HTML中实现点击事件处理,使得点击Button所在的div不触发事件,而点击div外部区域时触发事件。提供了三种方法,包括阻止事件冒泡、判断点击目标以及使用Vue的.self修饰符。这些方法有助于在前端开发中精确控制用户交互行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTML实现点击某一个元素之外触发事件

428d6c40f3b571a8f1d2bb0e9e9e8890.png

大致编写的HTML界面渲染后是这个样子的,我们现在想要实现的需求是点击Button所在的div不会触发事件,而在点击Button所在的div之外的区域时会触发事件,下面就来介绍三种方法实现。

Button

/* CSS代码 */

.container{

width: 400px;

height: 400px;

display: flex;

align-items: center;

justify-content: center;

border: 1px solid black;

}

.inner{

height: 100px;

width: 100px;

background-color: burlywood;

display: flex;

justify-content: center;

align-items: center;

cursor: pointer;

}

方法一、阻止事件冒泡

先给大家画一个示意图理解一下冒泡和捕获

fce041a65a671ebfba728b579030d176.png

由上面的HTML代码可以看到我们有一个嵌套的div,如果我们点击div的话是按什么顺序触发这两个事件的呢。其实是默认按照冒泡的方式触发的,简单来说就是由内而外,如果还是不明白请看上面的解析图。这就导致我们点击Button所在的div也会触发事件,所以我们要阻止冒泡就可以实现我们的需求

/**

* 方法一

* 利用阻止事件冒泡实现

*/

const inner = document.getElementsByClassName('inner')[0];

const container = document.getElementsByClassName('container')[0];

inner.addEventListener('click', event => {

event.stopPropagation(); // chromium内核

window.event.cancelBubble = true; // IE内核

})

container.addEventListener('click', event => {

console.log('success');

})

方法二、利用判断点击事件的target是否为内部元素

/**

* 下面介绍了三种方法来判断是否为内部元素

* 1.className是否相等,也可以使用id

* 2.DOM元素是否相等

* 3.点击的DOM是否包含内部DIV

*/

container.addEventListener('click', event => {

if('inner' !== event.target.className) {

console.log(`success`);

}

if(inner !== event.target) {

console.log('success');

}

if(event.target.contains(inner) && event.target !== inner) {

console.log('success');

}

})

方法三、使用Vue .self修饰符

当前元素自身时触发处理函数时才会触发函数

原理:是根据event.target确定是否当前元素本身,来决定是否触发的事件/函数

Vue logo

export default {

name: 'app',

components: {

HelloWorld

},

methods:{

container() {

console.log('success')

}

}

}

#app {

font-family: 'Avenir', Helvetica, Arial, sans-serif;

-webkit-font-smoothing: antialiased;

-moz-osx-font-smoothing: grayscale;

text-align: center;

color: #2c3e50;

margin-top: 60px;

background-color: aqua;

}

这样的话也可以实现点击内部div之外的部分触发特定函数

大家有什么其他的方法可以实现欢迎评论内提出

分类:

技术点:

友情链接:

navicat拆迁律师素材中国By © 2017 likecs 版权所有.

粤ICP备12038626号

Powered By WordPress . Theme by Luju

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值