jQuery DOM

创建

$('body').append($("<div></div>")) //向body 中插入一个 div

插入

append:这个操作与对指定的元素执行原生的appendChild方法,将它们添加到文档中的情况类似。

$(".content").append('<div></div>')

appendTo:实际上,使用这个方法是颠倒了常规的$(A).append(B)的操作,即不是把B追加到A中,而是把A追加到B中。

$('<div></div>').appendTo($(".content"))

注意
  • append()前面是被插入的对象,后面是要在对象内插入的元素内容
  • appendTo()前面是要插入的元素内容,而后面是被插入的对象

.after(content):在匹配元素集合中的每个元素后面插入参数所指定的内容,作为其兄弟节点

$(".test2").after('<p>after</p>', '<p>多参数</p>')

.before(content):根据参数设定,在匹配元素的前面插入内容

$(".test1").before('<p>before</p>', '<p>多参数</p>')

注意
  • before与after都是用来对相对选中元素外部增加相邻的兄弟节点
  • 2个方法都是都可以接收HTML字符串,DOM 元素,元素数组,或者jQuery对象,用来插入到集合中每个匹配元素的前面或者后面
  • 2个方法都支持多个参数传递after(div1,div2,....) 可以参考右边案例代码
  • after向元素的后边添加html代码,如果元素后面有元素了,那将后面的元素后移,然后将html代码插入
  • before向元素的前边添加html代码,如果元素前面有元素了,那将前面的元素前移,然后将html代码插

prepend 向每个匹配的元素前置内容

$('.aaron1').prepend('<p>prepend</p>')

prependTo把所有匹配的元素前置到另一个指定的元素集合中

$('<p>prependTo</p>').prependTo($('.aaron2'))

注意
  • .prepend()方法将指定元素插入到匹配元素里面作为它的第一个子元素 (如果要作为最后一个子元素插入用.append()).
  • .prepend()和.prependTo()实现同样的功能,主要的不同是语法,插入的内容和目标的位置不同
  • 对于.prepend() 而言,选择器表达式写在方法的前面,作为待插入内容的容器,将要被插入的内容作为方法的参数
  • 而.prependTo() 正好相反,将要被插入的内容写在方法的前面,可以是选择器表达式或动态创建的标记,待插入内容的容器作为参数。
  • append()向每个匹配的元素内部追加内容
  • prepend()向每个匹配的元素内部前置内容
  • appendTo()把所有匹配的元素追加到另一个指定元素的集合中
  • prependTo()把所有匹配的元素前置到另一个指定的元素集合中

insertBefore() 在目标元素前面插入集合中的每个元素

$('<p>测试insertBefore方法增加</p>', '<p>多参数</p>').insertBefore($(".test1"))

insertAfter() 在目标元素后面插入集合中的每个匹配的元素

$('<p>测试insertAfter方法增加</p>', '<p>多参数</p>').insertAfter($(".test2"))

注意
  • .before()和.insertBefore()实现同样的功能。主要的区别是语法——内容和目标的位置。 对于before()选择表达式在函数前面,内容作为参数,而.insertBefore()刚好相反,内容在方法前面,它将被放在参数里元素的前面
  • .after()和.insertAfter() 实现同样的功能。主要的不同是语法——特别是(插入)内容和目标的位置。 对于after()选择表达式在函数的前面,参数是将要插入的内容。对于 .insertAfter(), 刚好相反,内容在方法前面,它将被放在参数里元素的后面
  • before、after与insertBefore。insertAfter的除了目标与位置的不同外,后面的不支持多参数处理
  • insertAfter将JQuery封装好的元素插入到指定元素的后面,如果元素后面有元素了,那将后面的元素后移,然后将JQuery对象插入;
  • insertBefore将JQuery封装好的元素插入到指定元素的前面,如果元素前面有元素了,那将前面的元素前移,然后将JQuery对象插入;

删除

.empty() 清空所匹配元素内部的 html 代码,但标记仍然在 DOM 中

$('.hello').empty()

.remove() 移除所匹配元素内部所有元素,remove内部会自动操作事件销毁方法

$('.hello').remove()

注意
  • remove比empty好用的地方就是可以传递一个选择器表达式用来过滤将被移除的匹配元素集合,可以选择性的删除指定的节点
    $("p").remove(":contains('3')") //找到 p 元素中,包含3的元素然后删除
    $("p").filter(":contains('3')").remove() //找到 p 元素中,包含3的元素然后删除
  • empty()方法并不是删除节点,而是清空节点,它能清空元素中的所有后代节点
  • empty不能删除自己本身这个节点
  • remove该节点与该节点所包含的所有后代节点将同时被删除
  • remove提供传递一个筛选的表达式,删除指定合集中的元素

detach() 相当于剪切所匹配的元素,仅仅是显示效果没有了.但是内存中还是存在的.当你append之后,又重新回到了文档流中,就又显示出来了.

var p;
p = $("p").detach();  //p 元素只是从页面中消失了,
$("body").append(p); //p 元素又重新回到了页面上
注意
  • 移除的处理与remove一致
  • 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

拷贝

.clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。

clone方法比较简单就是克隆节点,但是需要注意,如果节点有事件或者数据之类的其他处理,我们需要通过clone(ture)传递一个布尔值ture用来指定,这样不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了


//clone处理一
$("div").clone()   //只克隆了结构,事件丢失

//clone处理二
$("div").clone(true) //结构、事件与数据都克隆
注意
  • clone()方法时,在将它插入到文档之前,我们可以修改克隆后的元素或者元素内容,如代码$(this).clone().css('color','red') 增加了一个颜色
  • 通过传递true,将所有绑定在原始元素上的事件处理函数复制到克隆元素上
  • clone()方法是jQuery扩展的,只能处理通过jQuery绑定的事件与数据
  • 元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个

替换

.replaceWith( newContent ):用提供的内容替换集合中所有匹配的元素并且返回被删除元素的集合

简单来说:用$()选择节点A,调用replaceWith方法,传入一个新的内容B(HTML字符串,DOM元素,或者jQuery对象)用来替换选中的节点A
$("p").replaceWith('<a style="color:red">替换第二段的内容</a>')

.replaceAll( target ) :用集合的匹配元素替换每个目标元素

.replaceAll()和.replaceWith()功能类似,但是目标和源相反,用上述的HTML结构,我们用replaceAll处理
$('<a style="color:red">替换第二段的内容</a>').replaceAll('p')

注意
  • .replaceAll()和.replaceWith()功能类似,主要是目标和源的位置区别
  • .replaceWith()与.replaceAll() 方法会删除与节点相关联的所有数据和事件处理程序
  • .replaceWith()方法,和大部分其他jQuery方法一样,返回jQuery对象,所以可以和其他方法链接使用
  • .replaceWith()方法返回的jQuery对象引用的是替换前的节点,而不是通过replaceWith/replaceAll方法替换后的节点

包裹

.wrap( wrappingElement ):在集合中匹配的每个元素周围包裹一个HTML结构

$('p').wrap('<div></div>') //给 p 元素增加一个 div 包围

.wrap( function ) :一个回调函数,返回用于包裹匹配元素的 HTML 内容或 jQuery 对象

使用后的效果与直接传递参数是一样,只不过可以把代码写在函数体内部,写法不同而已

$('p').wrap(function() {
    return '<div></div>';   //与第一种类似,只是写法不一样
})
注意
  • .wrap()函数可以接受任何字符串或对象,可以传递给$()工厂函数来指定一个DOM结构。这种结构可以嵌套了好几层深,但应该只包含一个核心的元素。每个匹配的元素都会被这种结构包裹。该方法返回原始的元素集,以便之后使用链式方法。

.unwarp(): 去除集合匹配的每一个元素周围包裹的一个 HTML 结构

$('p').unwarp(); //去除 p 标签外的一个 HTML 结构,而不伤害 p 标签

.wrapAll( wrappingElement ):给集合中匹配的元素增加一个外面包裹HTML结构

$('p').wrapAll('<div></div>') //给所有p元素增加一个div包裹

.wrapAll( function ) :一个回调函数,返回用于包裹匹配元素的 HTML 内容或 jQuery 对象

$('p').wrapAll(function() {
    return '<div><div/>'; 
})
注意
  • .wrapAll()函数可以接受任何字符串或对象,可以传递给$()工厂函数来指定一个DOM结构。这种结构可以嵌套多层,但是最内层只能有一个元素。所有匹配元素将会被当作是一个整体,在这个整体的外部用指定的 HTML 结构进行包裹。

.wrapInner( wrappingElement ):给集合中匹配的元素的内部,增加包裹的HTML结构

$('div').wrapInner('<p></p>') //给 div 的所有子元素增加一个 p 标签

.wrapInner( function ) :允许我们用一个callback函数做参数,每次遇到匹配元素时,该函数被执行,返回一个DOM元素,jQuery对象,或者HTML片段,用来包住匹配元素的内容

$('div').wrapInner(function() {
    return '<p></p>'; 
})
注意
  • 当通过一个选择器字符串传递给.wrapInner() 函数,其参数应该是格式正确的 HTML,并且 HTML 标签应该是被正确关闭的。

遍历

.children(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈,这里可以理解为就是父亲-儿子的关系)

$('div').children() //找到 div 中的所有子元素
$("div").children(':last') //找到 div 中的子元素的最后一个

.find() 查找所有后代节点中的所匹配的元素

$("div").find("li") //div 中所以为 li 的后代节点

注意
  • find是遍历当前元素集合中每个元素的后代。只要符合,不管是儿子辈,孙子辈都可以。
  • 与其他的树遍历方法不同,选择器表达式对于 .find() 是必需的参数。如果我们需要实现对所有后代元素的取回,可以传递通配选择器 '*'。
  • find只在后代中遍历,不包括自己。
  • 选择器 context 是由 .find() 方法实现的;因此,$('.item-ii').find('li') 等价于 $('li', '.item-ii')(找到类名为item-ii的标签下的li标签)。

parent() 查找所匹配元素的父元素
parents() 查找所匹配元素的所有祖先元素

$('.item').parent(':first')
$('.item').parents('.first-div')

closest()方法接受一个匹配元素的选择器字符串

$("div").closet("li')

注意
  • 起始位置不同:.closest开始于当前元素 .parents开始于父元素
  • 遍历的目标不同:.closest要找到指定的目标,.parents遍历到文档根元素,closest向上查找,直到找到一个匹配的就停止查找,parents一直查找到根元素,并将匹配的元素加入集合
  • 结果不同:.closest返回的是包含零个或一个元素的jquery对象,parents返回的是包含零个或一个或多个元素的jquery对象

.next() 元素紧邻的后面同辈元素的元素集合

$('.item').next(':first')

.prev() 元素紧邻的前面同辈元素的元素集合

$('.item').prev()

.siblings()元素集合中每一个元素的兄弟元素(不包含自己)

.add() 向指定元素添加新的对象

.add()的参数可以几乎接受任何的$(),包括一个jQuery选择器表达式,DOM元素,或HTML片段引用。
$('li').add('p').css('background', 'red')
$('li').add('<p>新的p元素</p>').appendTo($('.class'))

.each() 方法就是一个for循环的迭代器,它会迭代jQuery对象合集中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数从0开始计数

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

推荐阅读更多精彩内容

  • DOM创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作。但实际上...
    阿r阿r阅读 1,001评论 0 9
  • http://www.imooc.com/static/lib/jquery/1.9.1/jquery.js js...
    再见理想冷雨夜阅读 471评论 0 1
  • 第1章 简介 第2章 DOM节点的创建 2-1 DOM创建节点及节点属性 通过JavaScript可以很方便的获...
    mo默22阅读 800评论 0 8
  • 莺歌燕舞韵长, 和风细雨花香。 野陌枯草染绿, 万树爆出嫩芽。
    大众情人阅读 80评论 0 0
  • / 很多人去酒吧 不过是为了释放灵魂深处的另一个自己 可也有人在夜场的喧嚣里 永远地放下了那个本来的自己 / / ...
    我是哆啦K梦阅读 810评论 4 2