《锋利的jQuery》三、jQuery的DOM操作


title: 《锋利的jQuery》三、jQuery的DOM操作
date: 2017-07-03 09:23:54
tags: 锋利的jQuery


插入节点

append()

向每个匹配的元素内部追加内容 $('p').append('<b>你好</b>');结果为<p>一个p元素<b>你好</b></p>

appendTo()

将所有的匹配元素追加到指定的元素中,和append是相反的。$('<b>你好</b>').appendTo('p');结果为<p>一个p元素<b>你好</b></p>

prepend()

向每个匹配的元素内部前置内容 $('p').prepend('<b>你好</b>') 结果为 <p><b>你好</b>一个p元素</p>

prependTo()

将所有匹配的元素前置到指定的元素中。和prepend是相反的。 $('<b>你好</b>').prependTo('p') 结果为 <p><b>你好</b>一个p元素</p>

after()

在每个匹配的元素之后插入内容。$('p').after('<b>你好</b>') 结果为 <p>一个p元素</p><b>你好</b>

insertAfter()

将所有匹配的元素插入到指定元素的后面,和after是相反的。$('<b>你好</b>').insertAfter('p') 结果为 <p>一个p元素</p><b>你好</b>

before()

在每个匹配的元素之前插入内容。 $('p').before('<b>你好</b>') 结果为 <b>你好</b><p>一个p元素</p>

insertBefore()

将所有匹配的元素插入到指定的元素的前面,和before是相反的。$('<b>你好</b>').insertBefore('p') 结果为 <b>你好</b><p>一个p元素</p>

删除节点

remove()

删除匹配元素本身和所有后代节点。返回值是所有删除的节点的引用,因此可以在以后再使用这些删除的元素。

$('ul li:eq(1)').remove() 获取第2个<li>元素节点后,将它从网页中删除。

该方法还可以传递参数,通过参数选择性的删除元素。

$('ul li').remove('li[title!="菠萝"]');<li>元素中属性title不等于菠萝的<li>元素删除。

detach()

和remove()一样也是从DOM中去掉匹配的元素,但是不会从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。和remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。

empty()

empty()并不是删除节点,而是清空节点,清空匹配元素的所有后代节点。

$('ul li:eq(1)').empty() 获取第2个<li>元素节点后,清空此元素里的内容。

复制节点

clone()

通过clone()克隆一个节点,默认不可隆节点的事件,需要传参数true就可以同时复制节点中绑定的事件。

替换节点

replaceWith() 和 replaceAll()

替换节点是replaceWith()replaceAll()。如果在替换之前,已经为元素绑定事件,替换后原先绑定的事件将会与被替换的元素一起消失,需要在新元素上重新绑定事件。

$('p').replaceWith('<span>替换为span元素</span>') 将页面中的p元素替换为span元素。

$('<span>替换为span元素</span>').replaceAll('p') 用span元素去替换页面中的p元素。

包裹节点

wrap()

将匹配的每个元素用其他标记包裹起来,而且它不会破坏原始文档的语义。

$('strong').wrap('<b></b>');<b>标签把<strong>元素包裹起来。结果为<b><strong></strong></b> <b><strong></strong></b> <b><strong></strong></b>

wrapAll()

将所有匹配的元素用一个标签包裹起来。

$('strong').wrapAll('<b></b>');<b>标签把页面中所有<strong>元素包裹起来。结果为<b><strong></strong> <strong></strong> <strong></strong></b>

wrapInner()

将匹配的每个元素的子内容用其他标签包裹起来。

$('strong').wrapAll('<b></b>'); 元素<strong>内的内容被一对<b>标签包裹了。结果为``<strong><b></b></strong> <strong><b></b></strong> <strong><b></b></strong>`。

属性操作

attr()和prop()

用于获取和设置属性,只传一个参数是获取一个属性的值,传两个参数是设置属性,要设置多个属性可以传入一个对象。

prop()比较适合用于设置和获取html元素的固有属性,而attr()比较适合设置和获取自定义属性。

最主要的区别是表单元素的属性,比如checkedselected,这也是固有属性,这种通常我会希望如果没有设置或者用户操作没有选中则返回false,设置了或者选中了则返回true。

// 用input这个标签举例子来看一下两者主要区别
<input type="checkbox" name="" id="ipt"/>
console.log($("input").attr("checked"))      // 打印undefined
console.log($("input").prop("checked"))      // 打印false
<input type="checkbox" name="" id="ipt" checked/>
console.log($("input").attr("checked"))      // 打印checked
console.log($("input").prop("checked"))      // 打印true

removeAttr()和removeProp()

只需要传一个参数,要删除的属性名。

removeAttr()会删除整个属性,而remobeProp()只会让该属性的值变为undefined,而且removeProp()对自定义属性无效。

样式操作

addClass()

此方法用来追加样式,在匹配元素原有类名基础之上追加一个类名,$('p').addClass('active')

removeClass()

删除类名,当不传参数时是删除匹配元素对象的所有类名,$('p').removeClass();就是删除所有p元素的所有类名。

也可以删除指定类名,$('p').removeClass('high');删除所有p元素的high类名。

toggleClass()

替换类名,即如果传入的类名存在便删除,如果不存在就追加,$('p').toggleClass('active')

hasClass()

判断匹配的元素对象中是否还有某个类名,返回的是布尔值,$('p').hasClass('active')

设置和获取内容

html()

用于读取和设置匹配元素的html内容,和innerHTML方法的效果类似。不传参数即是获取。

text()

用于读取和设置匹配元素的文本内容,和innerText方法类似,但是text()兼容所有浏览器,而innerText不兼容firefox。

val()

用于读取和设置文本框、下拉列表、单选框、多选框元素的值,其中如果元素为多选,则会返回一个包含所有选择的值的数组。

如果不传参数则是获取值,传入参数是设置元素的值,由于val()专门针对表单元素,所以可以对下拉列表、单选框、多选框进行操作。

$('#multiple').val('选项二');   //让下拉列表默认选择第二个选项,参数就是选项的文本内容
$(':checbox').val(['check2','check3'])      // 多选框,默认选择第二和第三项,多个参数用数组形式设置。

遍历节点

children()

此方法用来获取匹配元素的所有子元素的个数,这个方法只考虑子元素而不考虑后代元素。

next()

获取匹配元素后面紧邻的同辈元素。

prev()

获取匹配元素前面紧邻的同辈元素。

siblings()

获取匹配元素前后所有的同辈元素,不包含自己。

closest()

获取最近的匹配元素,首先检查当前元素是否匹配,如果匹配则直接返回元素本身。如果不匹配则逐级向上查找直到找到匹配元素,如果什么都没找到返回一个空jQuery对象。

parent()、parents()

parent()是获取匹配元素的父级元素,只返回一个节点。

parents()是获取匹配元素的祖先元素,返回多个节点。

find()

搜索所有匹配元素下的指定的元素。

filter()

获取匹配元素中符合参数表达式的元素,和find()不同的是find()是去后代中匹配,而filter()是在当前元素中去匹配。

还可以传入一个函数,函数内部return一个判断表达式,若为true,则返回表达式匹配的元素。

nextAll()

获取匹配元素之后的所有同辈元素

prevAll()

获取匹配元素之前的所有同辈元素

CSS-DOM

css()

传入一个css属性就可以获取匹配元素的css属性值,不论行内还是外部引用的都可以获取。

传入两个参数,第一个是属性,第二个是属性值则可以设置匹配元素的css样式,也可以直接传入一个对象。对于带-符号的属性要用驼峰的写法,并且属性最好加上引号。

width()、height()

直接获取匹配元素的宽度和高度,不带单位,而且这里获取的宽高和css设置无关,是元素在页面中实际的宽高。

也可以传递一个值设置高度和宽度,值的格式是字符串。

offset()

获取元素在当前视窗的相对偏移,返回值是一个对象,即top和left,只对可见元素有效。

position()

获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,也是返回一个对象并且又top和left。

scrollTop()、scrollLeft()

获取元素的滚动条距顶端的距离和距左侧的距离。

可以给这两个方法指定一个参数,控制元素的滚动条滚动到指定位置。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 第1章 简介 第2章 DOM节点的创建 2-1 DOM创建节点及节点属性 通过JavaScript可以很方便的获...
    mo默22阅读 800评论 0 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 从厨房到书堂 从粗茶到红酒 从你的围裙,到我的烟斗 山高水长 哪里接头 去相濡以沫的天长地久 一袭衣,一碗粥, 一...
    偌星阅读 236评论 14 7
  • iOS UITabbarController 下不同item 之间UINavaitionController 下视...
    外星来的阅读 2,468评论 4 1
  • 六个孩子,嗷嗷待哺,而它们的母亲却充耳不闻,任由它们声嘶力竭的叫唤,喉咙都哑了。 叫得累了,也安静一会儿吧。一双双...
    田园听雨阅读 208评论 6 1