vue中使用jquery的一个问题

clipboard.png

由于项目的临时需要,把某一页很复杂的jquery写的页面嵌入了vue项目的里面,假设这一页jquery写的页面叫做jquery.vue,现在发现了一个问题:

从一个vue单页面文件 drag.vue通过路由跳转到jquery.vue的时候,点击jquery.vue页面的某个按钮,但是却无法触发它的点击事件,要刷新本页后点击才可以触发这个按钮的点击事件,这是为什么?

补充: jquery.vue页面的点击事件是这种类型:

$('#button').click(function(){})
阅读 10.2k
8 个回答

因为找不到节点,所以事件没有绑上;建议把事件绑在mounted周期内;或者method方法里

jquery产生效果的时间是document.ready之后,和vue的ready生命周期钩子时间差不多,所以建议把jQuery中的代码放到mounted中。这样保证可以找到节点,当然了,既然用了Vue, 为什么不直接把代码再稍微重构下呢,使用@click不是更舒服

vue组件里面 试试
mounted:function(){
$('#button').click(function(){})
}

ps:我是菜鸟

不贴完整代码无法确认问题所在,初步猜想应该是button是动态创建的,试试下面的写法

$('body').on('click', '#button', function() {
    // some codes
});

去看看vue的生命周期,应该是DOM为渲染的时候进行了事件绑定

比较同意是由于vue生命周期引起的事件绑定的问题,可以看看vue钩子函数的部分。

新手上路,请多包涵

第一反应是on绑定下试试?应该是在周期内

这不是违反使用框架之初的意愿了嘛

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题