vue学习笔记四:Jquery VS Vue之元素操作明细对照

  • Post author:
  • Post category:vue




系列文章目录


第一篇: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中的实现方式。



版权声明:本文为m0_37631110原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。