今天开发新项目的时候,有个需求,点击一个div 展示出个弹出窗 弹出窗标题的颜色要跟点击的div图标颜色一致,
所以这就需要我遍历一下多个数据,
然后需要点击弹出div的外部其他区域,隐藏这个div。所以 有了以下操作!
这个点击事件@click.stop="isPop(item.event)" 加上.stop 起阻止冒泡的效果,这里很重要,具体原因就暂时不解释了 。做的时候就会理解了;
目标div 是被 item.popShow 控制的,我给出我数组的格式
fiveList: [ { img: "./images/case/blockchain/1@2x.png", popShow: false, color: "rgba(245, 134, 125, 1)", title: "区块链钱包", content: "支持各类底层协议类钱包开发,如比特币、以太坊等代币开发和私有链的搭建,可完美对接会员系统和交易系统。" }, { img: "./images/case/blockchain/2@2x.png", popShow: false, color: "#6cd286", title: "会员算力系统", content: "会员算力系统包括会员管理系统、会员奖励制度、会员推荐制度,可对接商城系统,游戏等应用场景。" }, { img: "./images/case/blockchain/3@2x.png", popShow: false, color: "#36b5f0", title: "数字币交易系统", content: "分会员算力系统内置交易系统和独立交易系统,点对点交易。会员算力系统y无缝对接。" }, { img: "./images/case/blockchain/4@2x.png", popShow: false, color: "#ffa930", title: "大型交易所系统", content: "支持C2C交易、币币交易、OTC场外交易。内存运行,速度快,高效,稳定。" }, { img: "./images/case/blockchain/5@2x.png", popShow: false, color: "#a676e4", title: "专业的开发团队", content: "开发团队精通区块链数字币等技术,精通各种会员奖金制度算法和各类交易系统的开发。" } ],
然后如果单纯的需要控制这个div的显示与隐藏的话,就一条代码足矣
那么如何获取这个div的其他外部区域呢?
box 是弹出窗div的 id;
这样就能在内和在外操作了;
众所周知。 我们如果需要在这里面控制每个被点击的div的话,直接 this.xxx=false; 是不行的 原因你们应该也懂;
列出关键代码:
先var 一个 空数组;循环弹出层数组,拿到每个弹出层此时的 true or false 的状态
这是我点击第一个。所以就是 第一个 为true 其他都是 false了;
所以这里的逻辑就是,当这个div的状态为true时,将这个为true的数组 push 进 popList 中;然后点击 “在外” 那里将它隐藏就好了
因此就达到了想要的效果