jQuery中的DOM 操作

162 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

查找节点

查找元素节点

使用 jQuery 中的选择器用法即可完成查找元素节点的功能,相对于 DOM 中的查找元素节点 jQuery 选择器的方式更便捷。

var $li = $("ul li:eq(2)");

查找文本节点

通过 jQuery 的选择器查找到元素节点后,可以利用 text()方法获取其文本节点的文本内容。text()方法的用法类似于 DOM 中的textContent属性。

console.log($("p").text());

查找属性节点

通过 jQuery 的选择器查找到元素节点后,可以利用attr()方法获取其属性的值。attr()方法的用法类似于 DOM 中的getAttribute()方法。

console.log($("p").attr("title"));

获取父节点

获取父节点

jQuery 中的parent()方法用于获取指定元素的父元素。

var Selement = $("selector").parent([expr]);
  • selector:表示 jQuery 中的选择器。
  • expr:可选,parent()方法的参数,表示用于筛选的选择器。
var $parent = $("li:first").parent(); //第一个<li>元素的父元素

jQuery 中除了parent()方法以外,还提供parents()方法和closest()方法具有类似功能。

方法名称描逑
parent()获取一个包含着所有匹配元素的唯一父元素的元素集合
parents()获取一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素)
closest()从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素

获取子节点

获取子节点

jQuery 中的children()方法用于获取指定元素的所有子元素。

var $element = $("selector").children([expr]);
  • selector:表示 jQuery 中的选择器。
  • expr:可选,children()方法的参数,表示用于筛选的选择器。
var $ul = $("ul").children();
ll < p > 元素下有3个子元素;

说明: children()方法只获取指定元素的子元素集合,而不获取其后代元素。

获取兄弟节点

获取兄弟节点

1.jQuery 中的next()方法用于获取指定元素的下一个相邻兄弟元素。

var $element = $("selector").next([expr]);
  • selector:表示 jQuery 中的选择器。
  • expr:可选,next()方法的参数,表示用于筛选的选择器。
var $p1 = $('p').next();/l<p>元素的下一个相邻兄弟元素

2.jQuery 中的prev()方法用于获取指定元素的上一个相邻兄弟元素。

var $element = $("selector").prev([expr]);
  • selector:表示 jQuery 中的选择器。
  • expr:可选,prev()方法的参数,表示用于筛选的选择器。
var $p1 = $('p').pre();/l<p>元素的上一个相邻兄弟元素

创建元素节点

创建元素节点

通过 jQuery 的工厂函数来创建元素节点。

var $element = $(elementName);
  • elementName:表示元素名称。
var $li = $("<li></li>");

插入节点

插入内部节点

jQuery 提供了一系列方法用于向指定 HTML 页面元素内部插人节点:

  • append()方法:向每个匹配的元素内部追加内容。
  • appendTo()方法:把所有匹配的元素追加到另一个指定的元素元素集合中。
  • prepend()方法:向每个匹配的元素内部前置内容。
  • prependTo()方法:把所有匹配的元素前置到另一个、指定的元素元素集合中。
// append - append后面的节点被添加到append前面的节点的后面
$("#ti").append($("#ms"));
// prepend - prepend后面的节点被添加到prepend前面的节点的前面
$("#ti").prepend($("#ms"));
// appendTo. - append To前面的节点被添加到appendTo后面的节点的后面
$("#ti").appendTo($("#ms"));
// prependTo. - prependTo前面的节点被添加到prependTo后面的节点的前面
$("#ti").prependTo($("#ms"));

插入外部节点

jQuery 提供了一系列方法用于向指定 HTML 页面元素外部插人节点:

  • before()方法:在每个匹配的元素之前插入内容。
  • after()方法:在每个匹配的元素之后插入内容。
  • insertBefore()方法:把所有匹配的元素插入到另一个、指定的元素元素集合的前面。
  • insertAfter()方法:把所有匹配的元素插入到另一个、指定的元素元素集合的后面。
// before - before后面的节点被添加到before前面的节点的前面
$("#ti").before($("#ms"));
// after - after后面的节点被添加到after前面的节点的后面
$("#ti").after($("#ms"));
//insertBefore
$("#ti").insertBefore($("t#ms"));
//insertAfter
$("#ti").insertAfter($("#ms"));

删除节点

remove()方法

jQuery 中提供rermove()方法用于从 DOM 中删除所有匹配的元素。

$element.remove([expr]);
  • expr:用于筛选元素的 jQuery 表达式。
$("ul li:eq(1)").remove(); //获取第二个<li>元素节点后,将它从网页中删除
$("ul li").remove("li[title!=菠萝]"); //把<li>元素中属性title不等于"菠萝"的<li>元素删除

empty()方法

jQuery 中提供 empty)方法删除匹配的元素集合中所有的子节点。

$element.emptv();

empty()方法的用法如下示例代码:

$("ul lieq(1)").empty();ll获取第二个<li>元素节点后,清空此元素里的内容

替换节点

replaceWith()方法

jQuery 中提供replaceWidth()方法将所有匹配的元素替换成指定的 HTML 或 DOM 元素。

$element.replaceWidth(content);
  • content:用于将匹配元素替换掉的内容。
$("p").replaceWith("<strong>你最不喜欢的水果是?</strong>");

replaceAll()方法

jQuery 中提供replaceAll()方法将所有匹配的元素替换成指定的 HTML 或 DOM 元素。

$element.replaceAll(content);
  • content:用于将匹配元素替换掉的内容。
$("p").replaceAll("<strong>你最不喜欢的水果是?</strong>");

复制节点

colne()方法

jQuery 中提供clone()方法克隆匹配的 DOM 元素并且选中这些克隆的副本。

$element.clone(events);
  • events:一个布尔值 ( true 或者 false)指示事件处理函数是否会被复制。默认为 false。
$("ul li").click(function(){
	$(this).clone().appendTo("ul"");//复制当前点击的节点,并将它追加到<u>元素								$(this).clone(true).appendTo("ul");//注意参数true
	//可以复制自己,并且他的副本也有同样功能
});

说明:该方法与原生 DOM 中的复制节点的方法 cloneNode()在使用时极为相似。

  • 原生 DOM 中的cloneNade(Boolean)方法,参数 Boolean 表示是否复制后代节点。
  • jQuery 中的clone(Boolean)方法,参数 Boolean 表示是否复制事件。

属性操作

removeAttr()方法

jQuery 中提供removeAttr()方法从每一个匹配的元素中删除一个属性。

$("#id").removeAttr("name");
  • name:要删除的属性名
//removeAttr()方法–类似于DOM中的removeAttribute()
$("#bj").removeAttr("id");