系列文章目录
第一篇:Jquery VS Vue之差异比较概览
第二篇:Jquery VS Vue之元素操作明细对照
第三篇:Jquery VS Vue之事件监听明细对照
第四篇:Jquery VS Vue之网络请求明细对照
第五篇:Jquery VS Vue之杂项方法明细对照
第六篇:Jquery VS Vue之全局属性对照
第七篇:Jquery VS Vue之遍历方法对照
第八篇:Jquery VS Vue之页面动画明细对照
文章目录
一、前言
本篇对比Jquery中的元素操作相关方法在vue中的实现,本文中的vue对应实现方法可能有多种方式,只列出我所知道的,若有其它对应的操作方法可留言给我补充。
jquery参考文档:
jQuery HTML / CSS 方法
vue参考文档:
Vue Api
二、明细
2.1 class类相关操作:
方法 | 描述 |
---|---|
addClass() | 向被选元素添加一个或多个类名 |
hasClass() | 检查被选元素是否包含指定的 class 名称 |
removeClass() | 从被选元素移除一个或多个类 |
toggleClass() | 在被选元素中添加/移除一个或多个类之间切换 |
在vue中的对应实现:
vue中使用v-bind(简写:‘:’或’.’)来绑定元素属性,具体用法说明:
动态地绑定一个或多个 attribute,或一个组件 prop 到表达式。
在绑定 class 或 style attribute 时,支持其它类型的值,如数组或对象。可以通过下面的教程链接查看详情。
在绑定 prop 时,prop 必须在子组件中声明。可以用修饰符指定不同的绑定类型。
没有参数时,可以绑定到一个包含键值对的对象。注意此时 class 和 style 绑定不支持数组和对象。
addClass()、removeClass()、toggleClass()对应的实现方法代码示例:
绑定那个class使用js代码进行完全控制,可以使用模板语法来指定对应的class。
<!-- class 绑定 -->
<div :class="{ red: isRed }"></div>
<div :class="[classA, classB]"></div>
<div :class="[classA, { classB: isB, classC: isC }]"></div>
hasClass()对应的实现方法代码示例:
由于绑定那个class是使用js代码控制的,所以无查询元素是否包含对应元素的方法,若要使用对应的功能,需要获取原始dom标签,再通过getAttribute(“class”)获取标签上所有的class,再通过字符串检索的方式进行实现对应功能。
<template>
<div ref="test" :class="{ classA: true, classB: true }">class测试</div>
</template>
<script>
import { ref } from 'vue'
export default {
mounted() {
// 第一种方法:
console.log("第一种方法:" + document.querySelector(".classB").getAttribute("class"))
// 第二种方法:
for(var i=0;i<this.$refs.test.attributes.length;i++){
console.log("第二种方法:" +this.$refs.test.attributes[i].value);
}
}
}
</script>
2.2 css属性相关操作
方法 | 描述 |
---|---|
css() | 为被选元素设置或返回一个或多个样式属性 |
$.cssHooks | 提供了一种方法通过定义函数来获取和设置特定的CSS值 |
$.escapeSelector() | 转义CSS选择器中有特殊意义的字符或字符串 |
在vue中的对应实现:
vue中内联样式的处理方式和处理class的方式类似:
<!-- style 绑定 -->
<div :style="{ fontSize: size + 'px' }"></div>
<div :style="[styleObjectA, styleObjectB]"></div>
获取指定内联样式的值,方式和class一样,代码如下:
<template>
<div ref="test" class="test" :style="{ color: activeColor, fontSize: fontSize + 'px' }">style测试</div>
</template>
<script>
import {ref} from 'vue'
export default {
data() {
return {
activeColor: 'red',
fontSize: 30
}
},
mounted() {
// 第一种方法:
console.log("第一种方法:"+document.querySelector(".test").getAttribute("style"))
// 第二种方法:
for (var i = 0; i < this.$refs.test.attributes.length; i++) {
console.log("第二种方法:"+ this.$refs.test.attributes[i].name+"="+this.$refs.test.attributes[i].value);
}
}
}
</script>
<style></style>
2.3 元素内容相关操作
方法 | 描述 |
---|---|
html() | 设置或返回被选元素的内容 |
text() | 设置或返回被选元素的文本内容 |
wrap() | 在每个被选元素的周围用 HTML 元素包裹起来 |
wrapAll() | 在所有被选元素的周围用 HTML 元素包裹起来 |
wrapInner() | 在每个被选元素的内容周围用 HTML 元素包裹起来 |
after() | 在被选元素后插入内容 |
append() | 在被选元素的结尾插入内容 |
appendTo() | 在被选元素的结尾插入 HTML 元素 |
before() | 在被选元素前插入内容 |
clone() | 生成被选元素的副本 |
detach() | 移除被选元素(保留数据和事件) |
empty() | 从被选元素移除所有子节点和内容 |
insertAfter() | 在被选元素后插入 HTML 元素 |
insertBefore() | 在被选元素前插入 HTML 元素 |
prepend() | 在被选元素的开头插入内容 |
prependTo() | 在被选元素的开头插入 HTML 元素 |
remove() | 移除被选元素(包含数据和事件) |
replaceAll() | 把被选元素替换为新的 HTML 元素 |
replaceWith() | 把被选元素替换为新的内容 |
unwrap() | 移除被选元素的父元素 |
在vue中的对应实现:
1. html()实现:
vue中使用v-html实现,代码示例:
<div v-html="'<h1>Hello World</h1>'"></div>
2. text()实现:
vue中使用v-text实现,代码示例:
<span v-text="msg"></span>
<!-- 等价于 -->
<span>{{msg}}</span>
3. wrap()、wrapAll()、wrapInner()、after()、append()、appendTo()、before()、detach()、empty()、nsertAfter()、insertBefore()、prepend()、prependTo()、remove()、replaceAll()、replaceWith()、unwrap()实现:
vue中无对应的实现方法,主要是vue中的元素的添加、删除等是通过代码及模板的方式控制的,所以动态更新元素内容无对应的实现方法。要动态更新元素内容时可以使用v-if、v-for、v-slot或动态组件的方式进行实现相应功能。
2.4 元素尺寸相关操作
方法 | 描述 |
---|---|
height() | 设置或返回被选元素的高度 |
innerHeight() | 返回元素的高度(包含 padding,不包含 border) |
innerWidth() | 返回元素的宽度(包含 padding,不包含 border) |
offset() | 设置或返回被选元素的偏移坐标(相对于文档) |
offsetParent() | 返回第一个定位的祖先元素 |
outerHeight() | 返回元素的高度(包含 padding 和 border) |
outerWidth() | 返回元素的宽度(包含 padding 和 border) |
position() | 返回元素的位置(相对于父元素) |
scrollLeft() | 设置或返回被选元素的水平滚动条位置 |
scrollTop() | 设置或返回被选元素的垂直滚动条位置 |
width() | 设置或返回被选元素的宽度 |
在vue中的对应实现:
vue中无对应的方法,设置尺寸、位置及滚动条位置等可以使用设置style样式实现,获取对应的值时需要通过原生js获取对应的值。
2.5 元素属性相关操作
方法 | 描述 |
---|---|
prop() | 设置或返回被选元素的属性/值 |
attr() | 设置或返回被选元素的属性/值 |
removeAttr() | 从被选元素移除一个或多个属性 |
removeProp() | 移除通过 prop() 方法设置的属性 |
在vue中的对应实现:
1. attr()、removeAttr()实现:
vue通过v-bind(缩写: 或 .)实现,获取值同获取class等方式一致。
<!-- 绑定 attribute -->
<img v-bind:src="imageSrc" />
<!-- 动态 attribute 名 -->
<button v-bind:[key]="value"></button>
2. prop()、removeProp()实现:
实现方式同attr()。
2.6 表单元素相关操作
方法 | 描述 |
---|---|
val() | 设置或返回被选元素的属性值(针对表单元素) |
在vue中的对应实现:
vue通过v-model实现,实例代码:
<input v-model="message" placeholder="edit me" />
值绑定到vue的data中。
三、总结
本篇汇总了jquery中属性操作、内容操作等对应vue中的实现方式。