点击事件只触发生效一次方法

通过设置全局变量来控制

 data() {
    return {
      openStyle:false,
      }
methods:{

  stretchBox() {
      if (this.openStyles) {
        console.log('哈哈哈哈');
      } else {
        console.log('呵呵');
     //需要执行的函数体
        this.openStyles=true
      }
    },
  }

另外一个博友的方法也可以https://blog.youkuaiyun.com/qq_39985511/article/details/89852669

### 解决 Vue Seamless Scroll 插件中第二次点击事件触发的问题 当使用 `vue-seamless-scroll` 插件时,可能会遇到列表项的点击事件在第一次正常工作之后不再响应的情况。这通常是因为组件重新渲染或 DOM 复制过程中丢失了绑定的事件监听器。 #### 问题原因分析 由于 `vue-seamless-scroll` 组件内部实现了自动滚动功能,其机制涉及到了对子节点(即要滚动的内容)的操作。这些操作可能导致原始DOM结构发生变化,从而使得最初挂载到特定元素上的事件处理器失效[^3]。 #### 实现可靠的点击事件处理方法 为了确保每次都能正确捕获用户的交互行为而不受上述因素影响,可以采取如下措施: 1. **通过委托方式来设置事件** 使用事件委派模式可以在父容器上定义一次性的事件侦听程序,并让该侦听程序负责管理所有后代元素发生的指定类型的事件。这样即使子孙结点被动态添加或移除也不会破坏已有的事件连接关系。 ```html <!-- HTML --> <div class="scroll-container"> <ul ref="listContainer" @click="handleClick"> <li v-for="(item, index) in items" :key="index" data-index="{{index}}"> {{ item }} </li> </ul> </div> ``` 2. **利用自定义属性传递数据** 将所需的数据作为HTML标签的dataset属性存储起来,在实际调用函数的时候再从中读取出来做进一步处理。 ```javascript // JavaScript (methods section of your component) export default { name: "ScrollComponent", methods: { handleClick(event){ const targetElement = event.target.closest('li'); // 获取最近的 li 元素 if (!targetElement) return; let dataIndex = parseInt(targetElement.getAttribute('data-index')); console.log(`Clicked on item at position ${dataIndex}`); try{ let infoAsync = JSON.parse(targetElement.dataset.obj); console.log(infoAsync); } catch(error){ console.error("Failed to parse dataset object:", error); } }, } }; ``` 3. **防止冒泡干扰其他组件的行为** 如果页面中有多个可点击区域,则可能需要阻止默认行为以及停止传播以避免不必要的副作用。 ```javascript handleClick(event){ ... event.stopPropagation(); // 防止事件向上冒泡至更高层级的祖先元素 event.preventDefault(); // 取消浏览器对于此事件的默认动作 ... } ``` 以上策略能够有效应对由 `vue-seamless-scroll` 引起的点击事件失灵现象,保证用户体验的一致性和稳定性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值