js进阶 11-9/10/11 jquery创建和插入节点

时间:2023-12-26 18:07:01

js进阶 11-9/10/11 jquery创建和插入节点

一、总结

一句话总结:

1、jquery插入节点8个方法?

内部之前,内部之后,之前,之后;各两个

  • append()和appendTo()
    • append() 方法在被选元素的结尾插入指定内容。

      语法1:$(selector).append(content)

      语法2:$(selector).append(function(index,html))

    • appendTo()跟append()类似,作用都是在所选元素内部的“末尾”插入内容。

      语法:$(content).appendTo(selector)

      append() 和 appendTo() 方法执行的任务相同。不同之处在于:内容和选择器的位置,以及 append() 能够使用函数来附加内容。

  • prepend()和prependTo()
    • prepend(),prependTo() 方法在被选元素的开头(内部)插入指定内容。
    • 使用方法和appendTo(),append()类似
  • before()和insertBefore()
    • before(content|fn):在每个匹配的元素之前插入内容。
    • insertBefore(content):把所有匹配的元素插入到另一个、指定的元素元素集合的前面。
  • after()和insertAfter()
    • after(content|fn):在每个匹配的元素之后插入内容。
    • insertAfter(content):把所有匹配的元素插入到另一个、指定的元素元素集合的后面。

2、jquery创建节点方法?

$(html) 如:$("< li >< /li >")

36                 //var $li=$('<li></li>')
37 //var $li=document.createElement('li')

3、append() 和 appendTo()的区别和联系?

append() 和 appendTo() 方法执行的任务相同。不同之处在于:内容和选择器的位置,以及 append() 能够使用函数来附加内容。

二、jquery创建和插入节点

1、相关知识

DOM操作

DOM操作是jQuery核心内容之一,在前端开发时,我们往往需要在页面某个地方添加一个元素或者删除元素,这种添加元素、删除元素的操作就是通过DOM来实现的。

我们之前学习了html(),text()方法为文档添加新的内容,但是更多时候我们需要在现有内容之上增加或修改某些内容,这就要用到我们接下来要讲的节点操作。

  1. 创建节点:$(html) 如:$("< li >< /li >")
  2. 插入节点
    • append()和appendTo()
      • append() 方法在被选元素的结尾插入指定内容。

        语法1:$(selector).append(content)

        语法2:$(selector).append(function(index,html))

      • appendTo()跟append()类似,作用都是在所选元素内部的“末尾”插入内容。

        语法:$(content).appendTo(selector)

        append() 和 appendTo() 方法执行的任务相同。不同之处在于:内容和选择器的位置,以及 append() 能够使用函数来附加内容。

    • prepend()和prependTo()
      • prepend(),prependTo() 方法在被选元素的开头(内部)插入指定内容。
      • 使用方法和appendTo(),append()类似
    • before()和insertBefore()
      • before(content|fn):在每个匹配的元素之前插入内容。
      • insertBefore(content):把所有匹配的元素插入到另一个、指定的元素元素集合的前面。
    • after()和insertAfter()
      • after(content|fn):在每个匹配的元素之后插入内容。
      • insertAfter(content):把所有匹配的元素插入到另一个、指定的元素元素集合的后面。
  3. 删除节点
    1. remove():删除匹配的元素集合中所有的子节点。

      绑定的事件,附加的数据等都会被移除。

    2. detach():从DOM中删除所有匹配的元素。

      与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。

    3. empty():删除匹配的元素集合中所有的子节点。

      remove()和detach()这2个方法删除节点时,会将自身节点以及后代节点一并删除。但是empty()方法仅仅删除后代节点,而会保留自身节点。

  4. 复制节点

    语法:$(selector).clone(includeEvents)includeEvents:可选。布尔值。规定是否复制元素的所有事件处理。

  5. 包裹节点:
    • wrap():把每个被选元素放置在指定的 HTML 内容或元素中。
    • wrapAll():将所有匹配的元素用单个元素包裹起来
    • unwrap():移出元素的父元素。
    • wrapInner():将每一个匹配的元素的子内容(包括文本节点)用一个HTML结构包裹起来
  6. 替换节点
    • replaceWith():用指定的 HTML 内容或元素替换被选元素。
    • replaceAll():用指定的 HTML 内容或元素替换被选元素。

      replaceAll() 与 replaceWith() 作用相同。差异在于语法:内容和选择器的位置,以及 replaceWith() 能够使用函数进行替换。

  7. 遍历节点:each()

    在jQuery中,我们可以使用each()方法来轻松实现元素的遍历操作。

    语法:$(selector).each(function(index))

2、代码

代码9-9

 <!DOCTYPE html>
<html lang="en">
<style>
</style>
<head>
<meta charset="UTF-8">
<title>演示文档</title>
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<style>
li{
background: #ccc;margin-top: 5px;width: 150px;
}
.orange{background: orange}
div{
background: green;
width: 20px;height: 20px;
display: inline-block;
}
</style>
</style>
</head>
<body>
<div id="div1"></div>
<ol>
<li>列表项</li>
<li>列表项</li>
<li>列表项</li>
</ol>
<input id="btn1" type="button" value="节点插入1">
<input id="btn2" type="button" value="节点插入2">
<input id="btn3" type="button" value="节点插入3">
<script type="text/javascript">
$(function(){
$('#btn1').click(function(){
//创建节点 '$()方法'创建节点
//var $li=$('<li></li>')
//var $li=document.createElement('li')
var $li=$('<li class="orange"></li>')
$('ol').append($li)
}) $('#btn2').click(function(){
$('li').append(function(index,html){
return '<div>'+index+'</div>'+html
})
}) $('#btn3').click(function(){
$('li').append($('#div1'))
})
})
</script>
</body>
</html>

代码9-10

 <!DOCTYPE html>
<html lang="en">
<style>
</style>
<head>
<meta charset="UTF-8">
<title>演示文档</title>
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<style>
li{
background: #ccc;margin-top: 5px;width: 150px;
}
.orange{background: orange}
div{
background: green;
width: 20px;height: 20px;
display: inline-block;
}
</style>
</style>
</head>
<body>
<div id="div1"></div>
<ol>
<li>列表项</li>
<li>列表项</li>
<li>列表项</li>
</ol>
<input id="btn1" type="button" value="节点插入1">
<input id="btn2" type="button" value="节点插入2">
<input id="btn3" type="button" value="节点插入3">
<script type="text/javascript">
$(function(){
$('#btn1').click(function(){
var $li=$('<li class="orange"></li>')
//$('ol').append($li)
//$($li).appendTo('ol')
//$('ol').prepend($li)
$($li).prependTo('ol')
}) $('#btn2').click(function(){
// $('li').append(function(index,html){
// return '<div>'+index+'</div>'+html
// })
$('li').prepend(function(index,html){
return '<div>'+index+'</div>'
})
}) $('#btn3').click(function(){
//$('li').append($('#div1'))
//$($('#div1')).appendTo($('li')) //$('li').prepend($('#div1'))
$($('#div1')).prependTo($('li'))
})
})
</script>
</body>
</html>

代码9-11

 <!DOCTYPE html>
<html lang="en">
<style>
</style>
<head>
<meta charset="UTF-8">
<title>演示文档</title>
<script type="text/javascript" src="jquery-3.1.1.min.js"></script>
<style>
li{
background: #ccc;margin-top: 25px;width: 150px;
}
.orange{background: orange}
</style>
</style>
</head>
<body>
<div id="div1"></div>
<ol>
<li>列表项</li>
<li>列表项</li>
<li>列表项</li>
<li>列表项</li>
</ol>
<input id="btn1" type="button" value="after">
<input id="btn2" type="button" value="before">
<script type="text/javascript">
$(function(){
$('#btn1').click(function(){
var $li=$('<li class="orange">我是新添加的</li>')
//$('li').append($li)
//$('li:nth-child(2)').append($li)
//$('li:nth-child(2)').after($li)
// $('li:nth-child(2)').after(function(){
// return '<li class="orange">我是新添加的</li>'
// })
$($li).insertAfter('li:nth-child(2)')
})
$('#btn2').click(function(){
var $li=$('<li class="orange">我是新添加的</li>')
//$('li:nth-child(2)').before($li)
// $('li:nth-child(2)').before(function(){
// return '<li class="orange">我是新添加的</li>'
// })
$($li).insertBefore('li:nth-child(2)') })
})
</script>
</body>
</html>