标签: js


坑位

最近开发一个需求,项目有用到jQuery和Vue,发现我jQuery绑定的事件全部都失效了。

Why

Vue会重新渲染dom,加上是异步实例Vue.所以正常写程序的话jq的$()获取的元素不是vue渲染后的元素。

解决方案

  • 方案1:最彻底的方法是既然用了Vue就全部交给Vue就好了,不再引入jQuery
  • 方案2: 既然Vue接管了并重新渲染dom,那我们就等Vue真正渲染重新渲染出dom了再执行我们的jQuery事件绑定,主要代码示例如下:
new Vue({
  el: "testId",
  mounted: function() {
    this.$nextTick(function(){
      // 在这里执行$()的dom事件绑定
      ...
    })
  }
})

方案2注意点:

  1. 针对你要通过jQuery绑定事件的元素不要使用v-if去显示隐藏,改用v-show吧;
  1. 尽量使用jquery的事件委托机制,这样可以针对后续生成的元素事件也做处理
  2. 事件绑定还是尽量通过@click方式来绑定吧;

相关文章:

  • 2022-12-23
  • 2021-12-30
  • 2021-08-12
  • 2022-02-02
  • 2022-01-07
  • 2021-08-15
  • 2021-12-29
  • 2022-02-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2021-09-20
  • 2021-10-03
相关资源
相似解决方案