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


Posted in Javascript onMarch 20, 2017

本篇文章主要介绍了如何解决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里是否触发相关改变的时候不重新设置一些值的清空以及获取 。

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

Javascript 相关文章推荐
jquery 插件 人性化的消息显示
Jan 21 Javascript
JS查看对象功能代码
Apr 25 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
Dec 02 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
Javascript 面向对象特性
Dec 28 Javascript
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
Nov 18 Javascript
基于jquery实现动态竖向柱状条特效
Feb 12 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
Vue.js路由vue-router使用方法详解
Mar 20 #Javascript
Vue插件写、用详解(附demo)
Mar 20 #Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 #Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 #Javascript
vue.js事件处理器是什么
Mar 20 #Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 #Javascript
Vue.js基础学习之class与样式绑定
Mar 20 #Javascript
You might like
php获取操作系统语言代码
2013/11/04 PHP
php实现encode64编码类实例
2015/03/24 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
JS中绑定事件顺序(事件冒泡与事件捕获区别)
2017/01/24 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Python中编写ORM框架的入门指引
2015/04/29 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python画环形图的方法
2020/03/25 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
python tkinter实现连连看游戏
2020/11/16 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
网站设计师的岗位职责
2013/11/21 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年清明节活动总结
2015/02/09 职场文书
贫困证明怎么写
2015/06/16 职场文书
公司备用金管理制度
2015/08/04 职场文书
《青山不老》教学反思
2016/02/22 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android