天天看點

jquery文檔操作

js的DOM操作,也就是所謂的增删改查DOM操作。通過js的DOM的操作,大家也能發現,大量的繁瑣代碼實作我們想要的效果。那麼jQuery的文檔操作的API提供了便利的方法供我們操作我們的文檔。

看一個之前我們js操作DOM的例子:

$(function () {
    var ul0 = document.getElementsByTagName('ul')[0]; //第一個ul
    var newli = document.createElement('li'); //li對象建立
    // newli.innerHTML = '<a>小馬過河</a>'; //建立的li添加内容  引号添加文本,反引号添加html。
    newli.innerHTML = `<a href="#">小馬過河</a>`; //建立的li添加内容
    ul0.appendChild(newli);  //li對象追加到ul的最後
})      
jquery文檔操作
jquery文檔操作

一.插入操作

知識點1:

文法:

父元素.append(子元素)      

解釋:追加某元素,在父元素中添加新的子元素。子元素可以為:stirng | element(js對象) | jquery元素

jquery文檔操作

 代碼:

jquery文檔操作
jquery文檔操作
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>魔降風雲變</title>
    <style>
    </style>
    <script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
         <script type="text/javascript">
            $(function () {
                var newli=document.createElement('li');
                newli.innerText='魔降風雲變'
                $('ul :eq(0)').append('<li>小馬過河</li>')//父中添加子,子可以是string
                $('ul :eq(0)').append(newli) //子可以是js對象
                $('ul :eq(0)').append($('.active'))//子可以是jq對象,結果是移動位置了。移動标簽位置
        })
    </script>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
    </ul>
    ------------------
    <ul>
        <li class="active"> ul2的一 </li>
        <li>ul2的二</li>
    </ul>
</body>
</html>      

View Code

<li>小馬過河</li>不是string,糾正一下。父追加子,子可以字元串,引起來的标簽,DOM對象,jq對象

jquery文檔操作

PS:如果追加的是jquery對象那麼這些元素将從原位置上消失。簡言之,就是一個移動操作。

似乎追加到第一個子标簽後面了,難道不是追加到最後麼?開頭添加一個元素,結果還是第一個追加是在開頭元素的後面,後面的追加到上一個追加的後面

jquery文檔操作

 其實是這樣的:

jquery文檔操作

指定索引的标簽追加子元素,将子元素在第一個子元素内添加,這樣的話,都是行内就一行顯示,第一個子元素中有塊級的就換行顯示

不用指定索引的追加子元素才是正常的追加。

知識點2:

子元素.appendTo(父元素)      

解釋:追加到某元素     子元素添加到父元素

$(function () {
            $('<li>使用選擇器追加,是從父的最後一個追加,且與索引追加沒沖突</li>').appendTo($('.ul1'))
            $('<li>使用索引添加,從第一行後面開始追加</li>').appendTo($('ul :eq(0)'))
        })      
jquery文檔操作
$('<li>小馬過河</li>').appendTo($('ul :eq(0)')) //子追加到父,      
jquery文檔操作

PS:要添加的元素同樣既可以是stirng 、element(js對象) 、 jquery元素

知識點3:

父元素.prepend(子元素);      

解釋:前置添加, 添加到父元素的第一個位置

$('ul').prepend('<li>我是第一個</li>')      

 父前置加子,這裡父是第一個ul,li裡文字和這裡的文字都是行内所有一行顯示,‘’是誰 ‘’ 在前 

jquery文檔操作

e

父使用索引  prepend放法,不是想象的那樣

jquery文檔操作

沒有索引,prepend,  前置追加一個子

jquery文檔操作

知識點4:

子元素.prependTo(父元素);      
$('<a href="#">mmm</a>').prependTo($('.ul1'))      
jquery文檔操作

知識點5:

兄弟元素.after(要插入的兄弟元素);
要插入的兄弟元素.inserAfter(兄弟元素);      

解釋:在比對的元素之後插入内容 

$('.ul1 li').after('mcw')  
 $('<li>小馬過河</li>').insertAfter('.ul2 li')      

元素對象.的後面加内容;$()對象點插入在元素選擇器後 (非對象)

jquery文檔操作

知識點6:

兄弟元素.before(要插入的兄弟元素);
要插入的兄弟元素.inserBefore(兄弟元素);      
$('.ul1 li').before('我是一個粉刷匠')
$('<h5>我是一個h5标題</h5>').insertBefore('.ul2 li')      

 元素對象.的前面加内容   ;内容對象.插入前面在選擇器選中的(非對象)

jquery文檔操作

二、克隆操作

$(選擇器).clone();      

解釋:克隆比對的DOM元素

jquery文檔操作
$('button').click(function() {

  // 1.clone():克隆比對的DOM元素
 // 2.clone(true):元素以及其所有的事件處理并且選中這些克隆的副本(簡言之,副本具有與真身一樣的事件處理能力)
  $(this).clone(true).insertAfter(this);
})      
jquery文檔操作

三、修改操作

$(selector).replaceWith(content);      

将所有比對的元素替換成指定的string、js對象、jquery對象。

//将所有的h5标題替換為a标簽
$('h5').replaceWith('<a href="#">hello world</a>')
//将所有h5标題标簽替換成id為app的dom元素
$('h5').replaceWith($('#app'));      

将選中的對象替換用内容

jquery文檔操作

$('<p>哈哈哈</p>')replaceAll('h2');      

解釋:替換所有。将所有的h2标簽替換成p标簽。

$('<br/><hr/><button>按鈕</button>').replaceAll('h4')      

感覺和replaceWith沒太大差別

jquery文檔操作

4、删除操作

$(selector).remove();       

解釋:删除節點後,事件也會删除(簡言之,删除了整個标簽)

$('ul').remove();      
jquery文檔操作

 點選一次就删除,按鈕就沒了。;

jquery文檔操作

在前面再把按鈕加上,但是再點選的時候事件沒有發生了。删除節點後,事件也會删除

jquery文檔操作

$(selector).detach();       

解釋:删除節點後,事件會保留

var $btn = $('button').detach()
 //此時按鈕能追加到ul中
 $('ul').append($btn)           
jquery文檔操作
jquery文檔操作
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>魔降風雲變</title>
    <style>
    </style>
    <script type="text/javascript" src="js/jquery.js" charset="utf-8"></script>
    <script type="text/javascript">
        $(function () {
            $('button').click(function () {
            alert('小馬過河');
            $(this).detach();
            $('.ul1').before($(this).detach())
        })
        })
    </script>
</head>
<body>
    <button class="butt">按鈕</button>
    <ul class="ul1">
        <li>1</li>
        <li>2</li>
    </ul>
    ------------------
    <ul class="ul2">
        <li class="active"> ul2的一 </li>
        <li>ul2的二</li>
    </ul>
</body>
</html>      

使用detach實作了反複點選,反複生成這一個視窗事件。

jquery文檔操作

$(selector).empty();       

解釋:清空選中元素中的所有後代節點

//清空掉ul中的子元素,保留ul
$('ul').empty()      
jquery文檔操作

添加置空的事件

點選之後ul比對上的都沒有了

jquery文檔操作

參考連結:https://www.cnblogs.com/majj/p/9119467.html