如何解决vue与传统jquery插件冲突

发布时间 - 2026-01-11 00:16:14    点击率:

本篇文章主要介绍了如何解决vue与传统jquery插件冲突,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

比如基于jquery的select2插件,在vue下单独用有很多问题,其实对于这类插件,可以用vue的自定义指令和组件来包装,解决冲突的问题。引用官方vue1.0和2.0的两个例子,学习一下。

 例子1.0  例子2.0

大功告成。说说基于vue1的,对于下拉单选,用vue官方的例子即可,对于多选,看下面自己写的,核心是用指令对象的el、vm等获取被select2改变后的select下拉列表的相应对象,关键点是用jquery包装原生元素后用.val()获取多选值。

<body>
  <div id="el">
   <p>Selected: {{selected}}</p>
   <select v-select3="selected" multiple class="app1" >
    <option value="0">default</option>
    <option v-for="o in options" :value="o.id">{{ o.text }}</option>
   </select>
    
    <p>Selected: {{market}}</p>
   <select v-select3="market" multiple class="app2" >
    <option value="0">default</option>
    <option v-for="o in markets" :value="o.id">{{ o.text }}</option>
   </select>
  </div>
  <script>
    Vue.directive('select3', {
     twoWay: true,
     priority: 1000,

     params: ['options'],
      
     bind: function () {
      var self = this;
      $(this.el)
       .select2()
       .on('change', function () {
        self.set($(self.el).val());
        console.log($(self.el).val());
        if ( self.expression == 'selected') {
          self.vm.market = [];
        }

       })
     },
     update: function (value) {
      
      $(this.el).val(value).trigger('change')
     },
     unbind: function () {
      $(this.el).off().select2('destroy')
     }
    })

    var vm = new Vue({
     el: '#el',
     data: {
      selected: 0,
      market: '',
      options: [
       { id: 1, text: 'hello' },
       { id: 2, text: 'what' }
      ],
      markets: [
        { id: 1, text: '文山二手车' },
        { id: 2, text: '小哥二手车' }
      ]
     }
    });
    setTimeout(function () {
     vm.market = 0;
    }, 0);
  </script>
</body>

另外,在插入默认值的时候,注意做一个异步插入,因为vue更新页面是异步的,这里做了一个setTimeout( , 0)。

另外在单页里,考虑在SSpa的show的时候,设置一状态位vm.isInit,表示若是初始化默认选项,判断onchange里是否触发相关改变的时候不重新设置一些值的清空以及获取 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # jquery  # 冲突  # vue.js  # jquery冲突  # vue和jquery插件冲突  # vue中如何引入jQuery和Bootstrap  # 详解使用Vue.Js结合Jquery Ajax加载数据的两种方式  # Webpack+Vue如何导入Jquery和Jquery的第三方插件  # 详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件  # vue单页应用中如何使用jquery的方法示例  # jquery在vue脚手架中的使用方式示例  # jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】  # Vue.js列表渲染绑定jQuery插件的正确姿势  # jquery加载单文件vue组件的方法  # Vue中正确使用jQuery的方法  # 小哥  # 小编  # 多选  # 文山  # 有很多  # 可以用  # 这类  # 给大家  # 大功告成  # 做一个  # 做个  # 自定义  # 看看吧  # 也给  # 如何解决  # 大家多多  # 清空  # 单选  # 默认值  # 与传统 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  PythonWeb开发入门教程_Flask快速构建Web应用  网站建设保证美观性,需要考虑的几点问题!  深圳网站制作的公司有哪些,dido官方网站?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何用花生壳三步快速搭建专属网站?  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  LinuxShell函数封装方法_脚本复用设计思路【教程】  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Java遍历集合的三种方式  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  如何用VPS主机快速搭建个人网站?  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何挑选优质建站一级代理提升网站排名?  微信小程序 require机制详解及实例代码  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Windows Hello人脸识别突然无法使用  如何快速搭建个人网站并优化SEO?  如何在阿里云高效完成企业建站全流程?  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  java获取注册ip实例  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何有效防御Web建站篡改攻击?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何在云主机上快速搭建多站点网站?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel观察者模式如何使用_Laravel Model Observer配置  怎么用AI帮你为初创公司进行市场定位分析?  Laravel如何创建自定义Artisan命令?(代码示例)  如何在万网主机上快速搭建网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何用已有域名快速搭建网站?  如何在Windows环境下新建FTP站点并设置权限?  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何快速搭建二级域名独立网站?  原生JS实现图片轮播切换效果  C++用Dijkstra(迪杰斯特拉)算法求最短路径  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何用AI帮你把自己的生活经历写成一个有趣的故事?  如何正确选择百度移动适配建站域名?  如何用虚拟主机快速搭建网站?详细步骤解析  微信小程序 wx.uploadFile无法上传解决办法