RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 831449
Accepted
Alexxosipov
Alexxosipov
Asked:2020-05-22 08:11:41 +0000 UTC2020-05-22 08:11:41 +0000 UTC 2020-05-22 08:11:41 +0000 UTC

跟踪顶部元素 Vue.js 的点击

  • 772

大家好。我在 2 个元素上放置了一个点击处理程序:父级和子级。子元素是绝对定位的,它覆盖在父元素之上,即 它占据了父级的一部分。但是当一个元素被点击时,vue 也会跟踪对父元素的点击。怎样成为?对我来说,有必要在单击子元素的情况下,父元素不会以任何方式做出反应。

<template>
    <div class="product" @click="openModal">
        <div class="image"><img :src="image" alt=""></div>
        <div class="info">
            <div class="wrap">
                <div class="top">
                    <div class="status">
                        <p class="status__name">Статус товара</p>
                        <div class="status__image" @click="test"> //если кликаем сюда, родительский элемент тоже реагирует
                            <img src="img/cart.png" alt="">
                            <p>+</p>
                        </div>
                    </div>
                </div>
                <div class="bottom">
                    <p class="name">{{name}}</p>
                    <p class="price">{{price}} Р</p>
                </div>
            </div>              
        </div>
    </div>
</template>

<script>
    export default {
        props: ['id', 'image', 'name', 'price'],
        data: function() {
            return {

            }
        },

        methods: {
            openModal: function() {
                this.$modal.show('hello-world');
            },
            test: function() {
                console.log(123);
            }
        }
    }
</script>
javascript
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Ilia Brykin
    2020-05-22T15:17:52Z2020-05-22T15:17:52Z

    click.stop https://ru.vuejs.org/v2/guide/events.html

    new Vue({
    el: "#app",
            props: ['id', 'image', 'name', 'price'],
            data: function() {
                return {
    
                }
            },
    
            methods: {
                openModal: function() {
                  console.log('modal')
                },
                test: function() {
                  console.log("test");
                }
            }
        })
    .status {
      background: Lavender;
      height: 100vh;
    }
    
    .status__image {
      background: lightgrey;
      position: absolute;
    }
    <script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
        <div id="app" class="product" @click="openModal()">
            <div class="image"><img :src="image" alt=""></div>
            <div class="info">
                <div class="wrap">
                    <div class="top">
                        <div class="status">
                            <p class="status__name">Статус товара</p>
                            <div class="status__image" @click.stop="test()"> //если кликаем сюда, родительский элемент тоже реагирует
                                <img src="img/cart.png" alt="">
                                <p>+</p>
                            </div>
                        </div>
                    </div>
                    <div class="bottom">
                        <p class="name">{{name}}</p>
                        <p class="price">{{price}} Р</p>
                    </div>
                </div>              
            </div>
        </div>

    • 2
  2. Николай
    2020-05-22T10:12:46Z2020-05-22T10:12:46Z

    例如,您可以检查点击路径,如果有需要的类,则跳过该操作。

    例子:

    new Vue({
    el: "#app",
            props: ['id', 'image', 'name', 'price'],
            data: function() {
                return {
    
                }
            },
    
            methods: {
                openModal: function(e) {
                let result = false;
                for(let index in e.path) {
                  let item = e.path[index]
                  if (item.classList && item.classList[0] == 'status__image') result = true;
                  }
                    if(result) return ;
                  console.log('modal')
                    //this.$modal.show('hello-world');
                },
            }
        })
    .status {
      background: Lavender;
      height: 100vh;
    }
    
    .status__image {
      background: lightgrey;
      position: absolute;
    }
    <script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
        <div id="app" class="product" @click="openModal">
            <div class="image"><img :src="image" alt=""></div>
            <div class="info">
                <div class="wrap">
                    <div class="top">
                        <div class="status">
                            <p class="status__name">Статус товара</p>
                            <div class="status__image" > //если кликаем сюда, родительский элемент тоже реагирует
                                <img src="img/cart.png" alt="">
                                <p>+</p>
                            </div>
                        </div>
                    </div>
                    <div class="bottom">
                        <p class="name">{{name}}</p>
                        <p class="price">{{price}} Р</p>
                    </div>
                </div>              
            </div>
        </div>

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5