javascript - Vue.js 删除了 jQuery 事件处理程序

标签 javascript jquery vue.js

所以我使用 jQuery 制作了 Accordion /标签,我在 li 元素上使用 jquery .click 方法来翻页/标签。 现在我想集成 Vue.js 以在 Accordion 页面上显示我从 jquery 获得的 JSON 数据。 但是当我在 Accordion 上添加 .vue 类和 el: '.vue' 时,jquery .click 事件根本不会触发,现在标签不会翻页。

也许我不应该将 Vue 与 Jquery 一起使用,但我发现 jQuery 更容易完成一些简单的任务,例如在选项卡之间切换。

PS: 我是 Vue 的新手

最佳答案

我在处理一个大型项目时遇到了同样的问题,该项目有一堆现有的 jQuery 代码,我们想在其中切换到 Vue.JS,而不必一次性重构所有代码。

如果您正在使用像 webpack 这样的模块构建器,并且您不能保证导入的顺序,您可以执行以下操作:

安装根应用程序后,在文档上广播自定义事件:

const app = new Vue({
    el: '#app',
    mounted() {
        $(document).trigger('vue-loaded');
    }
});

然后将所有 jQuery 代码包装在自定义事件的事件监听器中:

$(document).on('vue-loaded', function () {
    const $toggle = $('.js-accordion-toggle');

    $toggle.on('click', function () {
        $(this).toggleClass('test');
    });
});

这在大型应用程序中对我有用

根据您的情况,您可能需要添加 $nextTick 以确保所有内容都已呈现 (https://v2.vuejs.org/v2/api/#mounted)

mounted () {
    this.$nextTick(function () {
        // Code that will run only after the
        // entire view has been rendered
   })
}

关于javascript - Vue.js 删除了 jQuery 事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44134147/

相关文章:

css - 如何在移动 View 上切换 Vue 组件的渲染顺序?

vue.js - npm run build --mode [.env.mode] 没有按预期工作

javascript - 如何使用字符串数组过滤嵌套对象

javascript - 如何测试调用窗口对象的javascript代码

javascript - Jquery-UI 对话框滚动到页面顶部

jquery - 将数字添加到表中

javascript - 使用 jqTransform 插件的错误

javascript - 如何排除 npm 上的搜索词?

javascript - 检测用户关闭选项卡或离开网站

javascript - 在变量 jquery 中运行 .hover()