技术开发 频道

6大jQuery库原生DOM方法,还不错!

  【IT168 评论】jQuery得以流行的主要原因是可让程序员轻松地选择DOM元素,遍历并修改其内容。但这是在很多年前,那时程序员还被IE7困扰,ECMAScript 5还未面世。

  在那之后,世界发生了翻天覆地的变化。浏览器已经变得称心如意,JavaScript出现了跨越式发展。这时,就有程序员站出来说,“我们还需要jQuery吗?”恐怕你是不知道这六个原生DOM方法吧!看完,没准你会因为jQuery库够酷而爱上JavaScript!

  1、append()

  append方法执行插入操作,即将节点添加到DOM树。它将参数附加到被调用节点的子节点列表中,请考虑以下示例:

放弃jQuery?你绝对没用这6个原生DOM方法!

  程序员或许会问:这与本机appendChild方法有什么不同呢?第一个区别是,anappend()可以一次使用多个参数,相应的节点将被附加到子列表中。继续代码:

放弃jQuery?你绝对没用这6个原生DOM方法!

  此外,一个参数可以是一个字符串。所以,使用appendChild()时,必须使用相当详细的语法:

  parent.appendChild(document.createTextNode('just some text'))

  与append()操作一样短:

放弃jQuery?你绝对没用这6个原生DOM方法!

  字符串转换为Text节点,因此不会解析任何HTML:

放弃jQuery?你绝对没用这6个原生DOM方法!

  这与jQuery方法形成对照,该方法分析了标记字符串,并生成相应节点插入到DOM树中。

  通常情况下,如果附加节点已存在于树中,则首先从其旧位置移除:

放弃jQuery?你绝对没用这6个原生DOM方法!

  append()和appendChild()之间的最后一个区别是后者返回附加节点,而前者返回undefined。

  2、prepend()

  prepend方法与append()非常相似。添加了子项,但是它们将被添加到调用该方法节点的子节点之前,就在第一个子节点之前:

放弃jQuery?你绝对没用这6个原生DOM方法!

  方法的返回值为undefined。

  3、after()

  after方法是另一种插入方法,但它必须在子节点之后调用,也就是一个具有确定父节点的节点。节点作为相邻的兄弟节点插入,如以下所示:

放弃jQuery?你绝对没用这6个原生DOM方法!

  返回值是undefined。

  4. before()

  before()与after()类似,但是在子节点之前插入:

放弃jQuery?你绝对没用这6个原生DOM方法!

  返回值同样是undefined。

  5. replaceWith()

  假设程序员想替换一个DOM节点。当然,他们可能有子节点,所以这个操作将替代整个DOM子树。在介绍这套方法之前,将使用replaceChild():

放弃jQuery?你绝对没用这6个原生DOM方法!

  可以使用replaceWith以不冗长的方式执行相同的操作:

放弃jQuery?你绝对没用这6个原生DOM方法!

  除了较短的语法之外,此方法的一个特点是接受几个参数,允许用其他节点列表替换一个节点。继续以前的交互式JavaScript会话:

放弃jQuery?你绝对没用这6个原生DOM方法!

  方法的返回值也是undefined。

  6、remove()

  从DOM树中删除节点怎么办?常用的方法是removeChild()。 如其名称所示,它必须在被删除节点n的父节点上调用:

放弃jQuery?你绝对没用这6个原生DOM方法!

  然而,使用remove(),操作相当简单:

放弃jQuery?你绝对没用这6个原生DOM方法!

  本机与jQuery操作的不同之处在于如何处理附加到已删除节点的事件侦听器。 jQuery删除与元素相关联的所有绑定事件和数据,而本机方法不会触及事件侦听器:

放弃jQuery?你绝对没用这6个原生DOM方法!

  这种行为更类似于jQuery detach方法。

  浏览器支持

  写这篇文章时,这几种方法所获得的浏览器支持为:

  prepend()>append()>before()>after()>replaceWith()

  桌面浏览器如下:

  1、谷歌浏览器从54版开始,全面支持上述方法。

  2、Firefox从49版本开始,全面支持上述方法。

  3、Safari从10版开始,全面支持上述方法。

  4、Opera从41版开始,全面支持上述方法。

  但是,请注意:Internet Explorer并不支持,Microsoft Edge也不支持(尽管对于Edge而言,该功能正在开发中)。remove方法得到了更广泛的支持,Microsoft Edge自14版本以来就实现了。

  insertAdjacentHTML

  结束之前,还想说几句insertAdjacentHTML。它提供类似于上面列出的前四种方法的插入操作:append(),prepend(),after(),before(),并且要添加的内容使用HTML字符串指定:

放弃jQuery?你绝对没用这6个原生DOM方法!

放弃jQuery?你绝对没用这6个原生DOM方法!

  请注意,我们必须使父节点成为另一个节点的子节点才能使用该位置参数beforebegin andafterend。

  幸运的是,insertAdjacentHTML()随处可见。

  结论

  看完这些方法之后,你认为jQuery如何?还是因为缺乏IE支持而打算放弃呢?程序员来说说你们的看法吧!万一让这个世界有点不同了呢!

0
相关文章