如何解决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 相关文章推荐
推荐一些非常不错的javascript学习资源站点
Aug 29 Javascript
jQuery 操作下拉列表框实现代码
Feb 22 Javascript
js完美解决IE6不支持position:fixed的bug
Apr 24 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
Apr 23 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
Apr 30 Javascript
vue中的过滤器实例代码详解
Jun 06 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
vue实现购物车小案例
Sep 27 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
Sep 14 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
php unicode编码和字符串互转的方法
2020/08/12 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
干货!教大家如何选择Vue和React
2017/03/13 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
基于树莓派的语音对话机器人
2019/06/17 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python如何写try语句
2020/07/14 Python
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
优秀团员个人的自我评价
2013/10/02 职场文书
相亲活动方案
2014/08/26 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
班主任高考寄语
2015/02/26 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL