您的位置:首页 > Web前端 > JQuery

前端基础-jQuery中的如何操作标签

2018-06-09 18:48 435 查看
阅读目录

样式操作

文本操作

属性操作

文档操作

一、样式操作

1、样式类

addClass();// 添加指定的CSS类名。
removeClass();// 移除指定的CSS类名。
hasClass();// 判断样式存不存在
toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。


①.addClass( className )方法:

通过动态改变类名(class),可以让其修改元素呈现出不同的效果。在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,

DOM元素响应的className属性获取的不是class名称的数组,而是一个含有空格的字符串,这就使得多class操作变得很麻烦。

同样的jQuery开发者也考虑到这种情况,增加了一个.addClass()方法,用于动态增加class类名

.addClass( className ) : 为每个匹配元素所要增加的一个或多个样式名

.addClass( function(index, currentClass) ) : 这个函数返回一个或更多用空格隔开的要增加的样式名

注意事项:

.addClass()方法不会替换一个样式类名。它只是简单的添加一个样式类名到元素上

简单的描述下:在p元素增加一个newClass的样式

<p class="orgClass">
$("p").addClass("newClass")

那么p元素的class实际上是 class="orgClass newClass"样式只会在原本的类上继续增加,通过空格分隔。

②.removeClass( )方法:

jQuery通过.addClass()方法可以很便捷的增加样式。如果需要样式之间的切换,同样jQuery提供了一个很方便的.removeClass(),

它的作用是从匹配的元素中删除全部或者指定的class

.removeClass( [className ] ):每个匹配元素移除的一个或多个用空格隔开的样式名

.removeClass( function(index, class) ) : 一个函数,返回一个或多个将要被移除的样式名

注意事项:

如果一个样式类名作为一个参数,只有这样式类会被从匹配的元素集合中删除 。 如果没有样式名作为参数,那么所有的样式类将被移除

③.toggleClass( )方法:

在匹配的元素集合中的每个元素上添加或删除一个或多个样式类,取决于这个样式类是否存在或值切换属性。即:如果存在(不存在)就删除(添加)一个类

在做某些效果的时候,可能会针对同一节点的某一个样式不断的切换,也就是addClass与removeClass的互斥切换,比如隔行换色效果

jQuery提供一个toggleClass方法用于简化这种互斥的逻辑,通过toggleClass方法动态添加删除Class,一次执行相当于addClass,再次执行相当于removeClass

1、.toggleClass( className ):在匹配的元素集合中的每个元素上用来切换的一个或多个(用空格隔开)样式类名

2、.toggleClass( className, switch ):一个布尔值,用于判断样式是否应该被添加或移除

3、.toggleClass( [switch ] ):一个用来判断样式类添加还是移除的 布尔值

4、.toggleClass( function(index, class, switch) [, switch ] ):用来返回在匹配的元素集合中的每个元素上用来切换的样式类名的一个函数。

接收元素的索引位置和元素旧的样式类作为参数

注意事项:

toggleClass是一个互斥的逻辑,也就是通过判断对应的元素上是否存在指定的Class名,如果有就删除,如果没有就增加

toggleClass会保留原有的Class名后新增,通过空格隔开

④.css() 方法:获取元素样式属性的计算值或者设置元素的CSS属性

通过JavaScript获取dom元素上的style属性,我们可以动态的给元素赋予样式属性。在jQuery中我们要动态的修改style属性我们只要使用css()方法就可以实现了

获取:

.css( propertyName ) :获取匹配元素集合中的第一个元素的样式属性的计算值

.css( propertyNames ):传递一组数组,返回一个对象结果

设置:

.css(propertyName, value ):设置CSS

.css( propertyName, function ):可以传入一个回调函数,返回取到对应的值进行处理

.css( properties ):可以传一个对象,同时设置多个样式

css("color","red")//DOM操作:tag.style.color="red"


示例:

$("p").css("color", "red"); //将所有p标签的字体设置为红色


注意事项:

浏览器属性获取方式不同,在获取某些值的时候都jQuery采用统一的处理,比如颜色采用RBG,尺寸采用px

.css()方法支持驼峰写法与大小写混搭的写法,内部做了容错的处理

当一个数只被作为值(value)的时候, jQuery会将其转换为一个字符串,并添在字符串的结尾处添加px,例如 .css("width",50}) 与 .css("width","50px"})一样

位置:

offset()// 获取匹配元素在当前窗口的相对偏移或设置元素位置
position()// 获取匹配元素相对父元素的偏移
scrollTop()// 获取匹配元素相对滚动条顶部的偏移
scrollLeft()// 获取匹配元素相对滚动条左侧的偏移


.offset()
方法允许我们检索一个元素相对于文档(document)的当前位置。

.position()
的差别在于:
.position()
是相对于相对于父级元素的位移。

尺寸:

height()
width()
innerHeight()
innerWidth()
outerHeight()
outerWidth()


二、文本操作

读取、修改元素的html结构或者元素的文本内容是常见的DOM操作,jQuery针对这样的处理提供了2个便捷的方法.html()与.text()

①.html()方法

获取集合中第一个匹配元素的HTML内容 或 设置每一个匹配元素的html内容,具体有3种用法:

.html() 不传入值,就是获取集合中第一个匹配元素的HTML内容

.html( htmlString ) 设置每一个匹配元素的html内容

.html( function(index, oldhtml) ) 用来返回设置HTML内容的一个函数

注意事项:

.html()方法内部使用的是DOM的innerHTML属性来处理的,所以在设置与获取上需要注意的一个最重要的问题,这个操作是针对整个HTML内容(不仅仅只是文本内容)

②.text()方法

得到匹配元素集合中每个元素的文本内容结合,包括他们的后代,或设置匹配元素集合中每个元素的文本内容为指定的文本内容。,具体有3种用法:

.text() 得到匹配元素集合中每个元素的合并文本,包括他们的后代

.text( textString ) 用于设置匹配元素内容的文本

.text( function(index, text) ) 用来返回设置文本内容的一个函数

注意事项:

.text()结果返回一个字符串,包含所有匹配元素的合并文本

③.html与.text的异同:

.html与.text的方法操作是一样,只是在具体针对处理对象不同

.html处理的是元素内容,.text处理的是文本内容

.html只能使用在HTML文档中,.text 在XML 和 HTML 文档中都能使用

如果处理的对象只有一个子文本节点,那么html处理的结果与text是一样的

火狐不支持innerText属性,用了类似的textContent属性,.text()方法综合了2个属性的支持,所以可以兼容所有浏览器

④.val()方法

jQuery中有一个.val()方法主要是用于处理表单元素的值,比如 input, select 和 textarea。

.val()无参数,获取匹配的元素集合中第一个元素的当前值

.val( value ),设置匹配的元素集合中每个元素的值

.val( function ) ,一个用来返回设置值的函数

注意事项:

通过.val()处理select元素, 当没有选择项被选中,它返回null

.val()方法多用来设置表单的字段的值

如果select元素有multiple(多选)属性,并且至少一个选择项被选中, .val()方法返回一个数组,这个数组包含每个选中选择项的值

⑤.html(),.text()和.val()的差异总结:

.html(),.text(),.val()三种方法都是用来读取选定元素的内容;只不过.html()是用来读取元素的html内容(包括html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的"value"值。其中.html()和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;另外.html()方法使用在多个元素上时,只读取第一个元素;.val()方法和.html()相同,如果其应用在多个元素上时,只能读取第一个表单元素的"value"值,但是.text()和他们不一样,如果.text()应用在多个元素上时,将会读取所有选中元素的文本内容。

.html(htmlString),.text(textString)和.val(value)三种方法都是用来替换选中元素的内容,如果三个方法同时运用在多个元素上时,那么将会替换所有选中元素的内容。

.html(),.text(),.val()都可以使用回调函数的返回值来动态的改变多个元素的内容。

获取被选中的checkbox或radio的值:

<label for="c1">女</label>
<input name="gender" id="c1" type="radio" value="0">
<label for="c2">男</label>
<input name="gender" id="c2" type="radio" value="1">


可以使用:

$("input[name='gender']:checked").val()


三、属性操作

每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。如:在img元素中,src就是元素的特性,用来标记图片的地址。

操作特性的DOM方法主要有3个,getAttribute方法、setAttribute方法和removeAttribute方法,就算如此在实际操作中还是会存在很多问题,这里先不说。

而在jQuery中用一个attr()与removeAttr()就可以全部搞定了,包括兼容问题

jQuery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr()

attr()有4个表达式

attr(传入属性名):获取属性的值

attr(属性名, 属性值):设置属性的值

attr(属性名,函数值):设置属性的函数值

attr(attributes):给指定元素设置多个属性值,即:{属性名一: “属性值一” , 属性名二: “属性值二” , … … }

attr(attrName)// 返回第一个匹配元素的属性值
attr(attrName, attrValue)// 为所有匹配元素设置一个属性值
attr({k1: v1, k2:v2})// 为所有匹配元素设置多个属性值
removeAttr()// 从每一个匹配的元素中删除一个属性


removeAttr()删除方法

.removeAttr( attributeName ) : 为匹配的元素集合中的每个元素中移除一个属性(attribute)

优点:

attr、removeAttr都是jQuery为了属性操作封装的,直接在一个 jQuery 对象上调用该方法,很容易对属性进行操作,也不需要去特意的理解浏览器的属性名不同的问题

注意的问题:

dom中有个概念的区分:Attribute和Property翻译出来都是“属性”,《js高级程序设计》书中翻译为“特性”和“属性”。简单理解,Attribute就是dom节点自带的属性

例如:html中常用的id、class、title、align等:

<div id="ManyQian" title="多多帅"></div>

而Property是这个DOM元素作为对象,其附加的内容,例如,tagName, nodeName, nodeType,, defaultChecked, 和 defaultSelected 使用.prop()方法进行取值或赋值等

获取Attribute就需要用attr,获取Property就需要用prop

用于checkbox和radio

prop() // 获取属性
removeProp() // 移除属性


注意:

在1.x及2.x版本的jQuery中使用attr对checkbox进行赋值操作时会出bug,在3.x版本的jQuery中则没有这个问题。

为了兼容性,我们在处理checkbox和radio的时候尽量使用特定的prop(),不要使用attr("checked", "checked")。

<script type="text/javascript">
$(".bt1").on('click', function() {
//找到内容为第二段的p元素
//通过replaceWith删除并替换这个节点
$(".right > div:first p:eq(1)").replaceWith('<a style="color:red">replaceWith替换第二段的内容</a>')
})
</script>
<script type="text/javascript">
//找到内容为第六段的p元素
//通过replaceAll删除并替换这个节点
$(".bt2").on('click', function() {
$('<a style="color:red">replaceAll替换第六段的内容</a>').replaceAll('.right > div:last p:last');
})
</script>


实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: