一、简介

vue项目使用jq和jqui的情况在有的老项目升级可能会出现,这里主要举例vue2项目中使用jqui的排序、拖拽、放置、缩放等方法,解决配置页面拖拽新建内容等需求。

二、具体步骤

1,准备环境

首先得在vue项目中引入jquery依赖。

(1)下载依赖

package.json文件加上以下内容,重新yarn一下即可;

"jquery": "^3.7.1",

"jquery-ui-dist": "^1.12.1"

(2)配置参数

jquery给vue参数赋值 vue中如何使用jquery_jquery

根目录下面的build文件夹里新建webpack.base.conf.js文件,若没有就新建,并且增加以下内容:

var webpack = require('webpack')
'use strict'
const path = require('path')
module.exports = {
  context: path.resolve(__dirname, '../'),
  entry: {
    app: './src/main.js'
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jquery: "jquery",
      jQuery: 'jquery',
      'windows.jQuery': 'jquery'
    })
  ]
}

然后在main.js引入$:

import $ from "jquery";

Vue.use($)

接着在页面中引入

import $ from "jquery";

试着打印一下,$是否可以使用:

export default {
  data() {
    return {};
  },
  mounted() {
    console.log('$(".about")', $(".about"));
  },
};

2,jqui使用文档

(1)排序(Sortable)
<ul id="sortable">
    <li class="ui-state-default">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
    <li class="ui-state-default">Item 6</li>
    <li class="ui-state-default">Item 7</li>
</ul>
<script>
import $ from "jquery";
export default {
  data() {
    return {};
  },
  mounted() {
    $("#sortable").sortable();
    $("#sortable").disableSelection();
  },
};
</script>

jquery给vue参数赋值 vue中如何使用jquery_jquery_02

属性表: 

属性

数据类型

默认值

说明

appendTo

String

"parent"

指定在拖动过程中将辅助元素追加到何处

axis

String

false

指定条目的拖动方向,可选择有"x"和”y“

cancel

Selector


指定禁止排序的元素

connectWith

Selector

false

允许排序列表连接另一个排序列表,将条目拖动之另一个列表中去

containment

Selector

Element

String

false

指定条目拖动的范围,可选值"parent","document","window",DOM元素或者jQuery选择符 

cursor

String

"auto"

指定排序时鼠标的css样式

cursorAt

Object

false

指定拖动条目时,光标出现的位置,取值时对象,可以包含top,left,right,bottom属性中的一个或两个

delay

Integer

0

指定拖动条目的延迟毫秒数

distance      

Integer

1

指定拖动条目的延迟像素数

dropOnEmpty

Boolean  

true

是否可以将条目拖放至空的列表中

forceHelperSize

Boolean  

false

是否强制辅助元素具有尺寸

forcePlaceholderSize

Boolean  

false

是否强制占有符具有尺寸

grid

Array

false

使条目或辅助元素对齐网络,取值为数组[x,y]分别表示网格的宽度和高度

handle

Selector

Element

false

指定条目的拖动手柄

helper

String

Function

"original"

指定显示的辅助元素,可选值:"original","clone",若为函数则返回一个DOM元素

items

Selector

">*"

指定列表中可以排序的条目

opacity

Float       

false

指定辅助元素的不透明度0.01~1

placeholder        

String

false

指定排序时,空白占位的css样式

revert

Boolean

Integer

false

是否支持动画效果,或指定动画毫秒数

scroll

Boolean

true

是否元素拖动到边缘时自动滚动

scrollSensitivity

Integer

20

指定元素拖动到距离边缘多少像素时开始滚动

scrollSpeed

Integer

20

指定滚动的速度

tolerance

String

"intersect"

设置拖动元素拖动多少距离时开始排序,可选值"intersect","pointer",前者表示重叠50%,后者表示重叠

z-index

Integer

1000

指定辅助元素的z-index值

方法名:

 事件名:

方法中的参数: 

jquery给vue参数赋值 vue中如何使用jquery_javascript_03

(2)拖动(Draggable)
<ul id="sortable">
    <li class="ui-state-default sort-item">Item 1</li>
    <li class="ui-state-default sort-item">Item 2</li>
    <li class="ui-state-default sort-item">Item 3</li>
    <li class="ui-state-default sort-item">Item 4</li>
    <li class="ui-state-default sort-item">Item 5</li>
    <li class="ui-state-default sort-item">Item 6</li>
    <li class="ui-state-default sort-item">Item 7</li>
</ul>
$(".sort-item").draggable();

jquery给vue参数赋值 vue中如何使用jquery_前端_04

属性表:

属性

数据类型

默认值

说明

cancel

Selector

Function 

"*"

设置投放对象可接受的元素,若提供函数,则把拖动元素作为第一个参数传给函数,则使该函数返回true的元素皆可

activeClass

String

false

设置可接受的拖动元素处于拖动状态时,可投放对象的css样式

addClass

Boolean

true

是否允许投放对象添加ui-droppable类

greedy

Boolean

false

是否在嵌套的投放对象中组织事件传播

hoverClass

String

false

设置拖动对象移动到投放对象上的css样式

scope

String

"default"

定义拖动对象和投放对象的目标集

tolerance        String

String

"intersect"

设置可接受的拖放元素完成投放的触发模式,包括"fit","intersect","pointer","touch"等

connectToSortable 

Selector 

false

允许draggable被拖拽到指定的sortables中,如果使用此选项helper属性必须设置成clone才能正常工作

axis 

String 

false

约束拖动的动作只能在X轴或Y轴上执行,可选值:'x', 'y'

cursor 

String 

"auto"

指定在做拖拽动作时,鼠标的CSS样式

cursorAt 

Object 

false

当开始移动时,鼠标定位在的某个位置上(最多两个方向),可选值:{ top, left, right, bottom }

delay 

Integer 

0

当鼠标点下后,延迟指定时间后才开始激活拖拽动作(单位:毫秒),此选项可以用来防止不想要的拖累元素时的误点击

distance 

Integer 

1

当鼠标点下后,只有移动指定像素后才开始激活拖拽动作

grid 

Array 

false

 拖拽元素时,只能以指定大小的方格进行拖动。可选值:[x,y] 

handle 

Element, Selector

false

限制只能在拖拽元素内的指定元素开始拖拽

helper 

String,

Function

'original' 

 拖拽元素时的显示方式。(如果是函数,必须返回值是一个DOM元素)可选值:'original', 'clone', Function 

iframeFix 

Boolean, Selector

false  

可防止当mouseover事件触发拖拽动作时,移动过iframes并捕获到它(内部内容),如果设置成true,则屏蔽层会覆盖页面的iframe。如果设置成对应的选择器,则屏蔽层会覆盖相匹配的iframe

opacity 

Float 

false  

当元素开始拖拽时,改变元素的透明度

refreshPositions 

Boolean 

false  

如果设置成true,所有移动过程中的坐标都会被记录。(注意:此功能将影响性能)

revert 

Boolean,

String 

false  

当元素拖拽结束后,元素回到原来的位置。

revertDuration 

Integer 

500

当元素拖拽结束后,元素回到原来的位置的时间。(单位:毫秒)

scope 

String 

 'default' 

设置元素只允许拖拽到具有相同scope值的元素

scroll 

Boolean 

true  

 如果设置为true,元素拖拽至边缘时,父容器将自动滚动

scrollSensitivity 

Integer 

20

 当元素拖拽至边缘时,父窗口一次滚动的像素

scrollSpeed 

Integer 

20

当元素拖拽至边缘时,父窗口滚动的速度

snap 

Boolean, Selector 

false

当设置为true或元素标签时,元素拖动到其它元素的边缘时,会自动吸附其它元素

snapMode 

String 

'both'  

确定拖拽的元素吸附的模式。可选值:'inner', 'outer', 'both' 

snapTolerance 

Integer 

20

确定拖拽的元素移动至其它元素多少像素的距离时,发生吸附的动作

stack 

Object 

false  

控制由选择器所触发的一系列元素的z-index值, 总是将当前被拖动对象至于最前。对于像窗口管理这样的应用来说,非常有用

zIndex 

Integer 

false  

控制当拖拽元素时,改变元素的z-index值

方法表:

事件表:

(3)放置(Droppable)
<div id="droppable" class="ui-widget-header">
    <p>放置容器</p>
</div>
$("#droppable").droppable({
      drop: function (event, ui) {
        $(this).addClass("ui-state-highlight").find("p").html("Dropped!");
      },
});

jquery给vue参数赋值 vue中如何使用jquery_jquery_05

属性表:

属性

数据类型

默认值

说明

accept 

 Selector, Function

"*"

仅允许符合适配器的元素激活拖放的事件。(如果是函数,则此函数会在页面上所有元素被调用,函数的返回值必须是布尔值。)

activeClass 

String 

false

如果设置值,则当有拖拽事件发生时,为页面上所有允许(accept)的元素添加此样式

addClasses 

Boolean 

true

设置为false,可以阻止ui-droppable样式添加至可拖放的对象。(这样可以获取一定的性能优化)

greedy 

Boolean 

false

是否防止嵌套的droppable事件被传播

hoverClass 

String 

false

当拖拽元素移至带有可拖放插件的元素上时,为元素添加指定的样式

scope

String 

"default"

设置元素只允许具有相同scope值拖拽元素激活此拖放元素

tolerance 

String 

"intersect"

判断一个可拖拽元素被【放到】一个可拖放元素的判断模式。(可选值:’fit’, ‘intersect’, ‘pointer’, ‘touch’)

fit:拖拽元素完全覆盖拖放元素

intersect:拖拽元素至少50%覆盖拖放元素

pointer:鼠标指针重叠在可拖放元素上

touch:只要有任何重叠即发生

方法表:

事件表:

(4)缩放(Resizable)
<div class="layout-item">
    <p class="layout-title">标题标题</p>
</div>
$(".layout-item").resizable();

jquery给vue参数赋值 vue中如何使用jquery_javascript_06

属性表:

属性

数据类型

默认值

说明

alsoResize

Element/String/Selector


当调整大小时,同步调整一组所选的元素大小

animate

Boolean

false

是否为缩放过程添加动画效果

animateDuration

Integer/String

"slow"

指定动画持续的时间,可以为“slow”,"normal","fast"或者具体的毫秒数

animateEasing

String       

"swing"

指定动画的效果

aspectRatio

Boolean/Float

false

是否调整大小时,保持原长宽比,也可以指定一个长宽比,如0.5

autoHide

Boolean

false

是否隐藏缩放手柄,直到鼠标位于该手柄之上时

cancel

Element/String/Selector


阻止匹配的元素的尺寸发生变化

containment

Element/String/Selector

false

限制在指定元素的边界范围内,调整大小尺寸,可选值:"parent","document",DOM元素或选择符

delay

Integer       

0

指定缩放的延迟像素数

ghost

Boolean

false

是否显示半透明的辅助元素

distance

Integer

1

指定缩放的延迟像素数

grid

Array

false

指定缩放时对齐的网格,接受[x,y]分别为网格宽度和高度

handles

String/Object

"e,s,se"

定义缩放手柄,若提供字符串,则以逗号分隔n,e,s,w,ne,se,sw,nw以及all,若为对象可以包含以上属性的任意项

helper

String

false

设置辅助元素的CSS样式

maxHeight

Integer

null

设置允许调整的最大高度

maxWidth

Integer

null

设置允许调整的最大宽度

minHeight

Integer

null

设置允许调整的最小高度

minWidth

Integer

null

设置允许调整的最小宽度

 方法表:

方法名

说明

$(selector).resizable("disable")

禁用缩放功能

$(selector).resizable("enable")

激活缩放功能

$(selector).resizable("destroy")

完全删除缩放功能

$(selector).resizable("option",name[value])

获取/设置属性

事件表:

事件

类型

说明

start

resizestart

当开始缩放操作时触发

resize

resize

当通过缩放手柄操作时触发

stop

resizestop

当停止缩放操作时触发

三、demo运用

根据

jquery给vue参数赋值 vue中如何使用jquery_javascript_07