jquery實現動態添加html代碼

先看下思導圖,總體瞭解下,而後咱們再來學習。javascript

如今咱們來看一下幾段代碼,而後根據這幾段代碼咱們來學習一下如何正確的學習動態添加html。css

一.html()方法

html函數的做用原理首先是移除目標元素內部的html代碼,而後將新代碼添加到目標元素。
第一段代碼:html

function CommentBubble()
{
    var w1 = '<div class="list">' +
    '<table class="out" border="0" cellspacing="0" cellpadding="0"> ' +
    '<tr>' +
    '<td class="icontd" align="right" valign="bottom">' +
    '<img src="http://files.cnblogs.com/files/wangqiguo/touxiang2.gif" width="70px" height="60px"/>' +
    '</td>' +
    '<td align="left" valign="bottom" class="q">' +
    '<table border="0" cellpadding="0" cellspacing="0" style=""> ' +
    '<tr><td class="topleft"></td><td class="top"></td><td class="topright"></td></tr> ' +
    '<tr><td class="left"></td> <td align="left" class="conmts"><p>';
    var w2 = '</p> </td> <td class="right"></td></tr> ' +
    '<tr><td class="bottomleft"></td><td class="bottom"></td><td class="bottomright"></td></tr> ' +
    '</table>' +
    '</td> ' +
    '</tr> ' +
    '</table> ' +
    '</div>';
    $.each($(".blog_comment_body"), function(i, t) {
    $(t).html(w1 + $(t).html() + w2);
    });
 
$(".louzhu").closest(".feedbackItem").find(".out").removeClass("out").addClass("inc"); 

}

使用前
個人前端之路-博客園前端

使用後:
個人前端之路-博客園java

知識點
這段代碼實際上使用了html()方法來動態添加代碼
關鍵點在jquery

$.each($(".blog_comment_body"), function(i, t) {
    $(t).html(w1 + $(t).html() + w2);
    });

相關知識點:
1. each()是遍歷方法, 簡單的說each就是個循環語句。
看一下例子:ajax

// each處理一維數組
  var arr1 = [ "aaa", "bbb", "ccc" ];      
  $.each(arr1, function(i,val){      
      alert(i);   
      alert(val);
  });
  // 處理json數據,例如ajax的返回值     
  var obj = { one:1, two:2, three:3};      
 $.each(obj, function(key, val) {      
      alert(key); 
      alert(val); 
  });

function (i, value)中i 是當前元素的位置,value是值。
例子:json

$.each([2,3,4],function(index,value){alert('第'+ index+ '數是'+value);});

2.html() 方法
語法:
$(selector).html(content)
例子:
$("p").html("W3School");
3.closest()方法
closest() 方法得到匹配選擇器的第一個祖先元素,從當前元素開始沿 DOM 樹向上。返回包含零個或一個元素的 jQuery 對象
代碼數組

$(".louzhu").closest(".feedbackItem").find(".out").removeClass("out").addClass("inc");

解釋:用closest找到class=" louzhu "的祖輩元素中符合是feedbackItem的標籤的元素,發現.out,而後移除這個類,加上類inc
個人前端之路-博客園app

仔細看一下,發現樓主層的樣式與普通樓的不同,氣泡顏色不同,樓主層有圖片頭像,普通層沒有
仔細查一下,發現,普通層
.list .out .icontd {
display: none
}
這樣圖片就不會出現.
個人前端之路-博客園

個人前端之路-博客園

若是仍是不懂的話,能夠參考這篇文章jQuery筆記:jQuery篩選器找父親parent,closest,parents,parentUntil

二.prepend()方法-內部插入

prepend()函數用於向每一個匹配元素內部的起始位置追加指定的內容。
語法:
.prepend(String/Element/jQuery)
指定的內容能夠是:html字符串、DOM元素(或數組)、jQuery對象、函數(返回值)。

第二段代碼:

window.onload = function () {
$('#div_digg').prepend('<div style="padding-bottom: 5px"><span class="icon_favorite" style="padding-top: 2px"></span><a onclick="follow();return false;" href="javascript:void(0);" style="font-weight: bold; padding-left:5px;">關注一下樓主吧</a> </div>'); 
}

個人前端之路-博客園
說明:
這主要用來了.prepend()方法
個人前端之路-博客園

能夠看到,代碼被插入到被選元素的開頭位置(位於內部)。
用畫圖來表示下
例子1:(html字符串)
代碼:

<div id="header"> 
</div>
<div id="middle">
</div>
<div id="footer">
</div>
<script>
$("#middle").prepend("<div>你好</div>");
</script>

個人前端之路-博客園
例子2:(DOM Element )
用畫圖來表示下
代碼:

<div id="header"> 
</div>
<div id="middle">
</div>
<div id="footer">
</div>
<script>
$("#middle").prepend( document.createTextNode("你好"));
</script>

個人前端之路-博客園
例子3:(jquery對象)
初始
個人前端之路-博客園
個人前端之路-博客園
加入代碼:
$("#header").prepend($("#middle"));
個人前端之路-博客園
個人前端之路-博客園
具體解釋能夠看下面的拓展2的講解。
例子4:(函數)
使用匿名函數向指定元素內部的前面插入節點
語法:
$(selector).prepend(function(index,html))
第一個參數就是當前元素在匹配元素中的索引,第二個參數就是該元素當前的內部html內容(innerHTML)。函數的返回值就是須要爲該元素追加的內容(能夠是html字符串、DOM元素、jQuery對象)。
注意:只有第一個參數能夠爲自定義函數,用於遍歷執行。若是以後的參數也爲函數,則調用其toString()方法,將其轉爲字符串,並視爲html內容。
舉例1:

<div id="header" class="add"> 
header</div>
<div id="middle" class="add">
middle</div>
<div id="footer" class="add">
footer</div>
<button>結尾添加內容</button>
<script>
 $(document).ready(function(){
  $("button").click(function(){
    $(".add").prepend(function(n){
      return "<b>你好 " + n + "</b>";
     });
   });
 }); 
</script>




舉例2:

<div id="header" class="add"> 
header</div>
<div id="middle" class="add">
middle</div>
<div id="footer" class="add">
footer</div>
<script>
  // 定義一個數組  
    var books = [  
        {name: "Java" , price:109},  
        {name: "Java EE" , price:89},  
        {name: "Android" , price:89}]  
    // 使用函數爲不一樣div元素動態添加不一樣的內容  
    $(".add").prepend(function(i)  
    {  
        // i表明jQuery對象中正在迭代處理的元素的索引,所以爲0、一、2...  
        return "<b>書名是《" + books[i].name  
            + "》,價格是:" + books[i].price;  
    })  
</script>



拓展:
1. DOM對象與jQuery對象
(1) 什麼是jQuery對象?---就是經過jQuery包裝DOM對象後產生的對象。
(2)jQuery對象轉成DOM對象:
因爲jQuery對象自己是一個集合。因此若是jQuery對象要轉換爲Dom對象則必須取出其中的某一項,通常可經過索引取出。
1)jQuery對象是一個數據對象,能夠經過[index]的方法,來獲得相應的DOM對象。
如:$("#middle")[0]$("div").eq(1)[0]$("p")[2]
2)jQuery自己提供,經過.get(index)方法,獲得相應的DOM對象
如:$("div").get()[6]
(3)DOM對象轉成jQuery對象:
對於已是一個DOM對象,只須要用\(()把DOM對象包裝起來,就能夠得到一個jQuery對象了。\)(DOM對象)
如:$(document.getElementById("middle"))
返回的就是jQuery對象,可使用jQuery的方法。
2.對原有的DOM元素進行移動(若對已在文檔中存在的元素使用插入節點的方法則至關於執行「移動節點」的操做
注意:若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。
重要:
(1) 若是有多個目標元素,內容將被複制而後插入到每一個目標裏面。
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。

例子1:
初始
個人前端之路-博客園
個人前端之路-博客園
加入代碼:
$("#header").prepend($("#middle"));
個人前端之路-博客園
個人前端之路-博客園
例子2:
初始
個人前端之路-博客園
個人前端之路-博客園
加入代碼
$("#header").prepend($("#middle"), $("#footer"));
個人前端之路-博客園
個人前端之路-博客園
3.與prepend()方法建立html代碼,追加DOM Element ,有關的DOM方法
(1)建立節點
建立流程比較簡單,大致以下:
1). 建立節點(常見的:元素、屬性和文本)
2). 添加節點的一些屬性
3). 加入到文檔中
流程中涉及的一點方法:
建立元素:document.createElement
設置屬性:setAttribute
添加文本:innerHTML createTextNode()
加入文檔:appendChild
看個例子:

<div class="header"></div>
<div class="middle"></div>
<div class="footer"></div>
<script>
    var d=document.createElement("div");//createElement:建立一個HTML標記
    var t=document.createTextNode("你好");//添加內容 createTextNode
    d.appendChild(t);//把你好添加到div標記中   appendChild:添加子標記
    document.body.appendChild(d); //默認添加在文檔的最後。
</script>

個人前端之路-博客園
個人前端之路-博客園

例子2:

<div id="header"></div>
<div id="middle"></div>
<div id="footer"></div>
<script>
    var d=document.createElement("div");//createElement:建立一個HTML標記
    var t=document.createTextNode("你好");//添加內容 createTextNode
    d.appendChild(t);//把你好添加到div標記中   appendChild:添加子標記
    document.getElementById("middle").appendChild(d); //把div標記添加到id是middle的標籤中  
</script>

個人前端之路-博客園
個人前端之路-博客園

(2)document.createElement()
createElement() 方法可建立元素節點。
document.createElement()是在對象中建立一個對象,要與appendChild() 或 insertBefore()方法聯合使用。

<div id="header"></div>
<div id="middle">你好</div>
<div id="footer"></div>
<script>
    var a  = document.createElement("p");
    document.getElementById("middle").appendChild(a); 
</script>

個人前端之路-博客園
個人前端之路-博客園

(3)document.createTextNode()
注意:createTextNode只是純粹創造了文本節點,因此返回的效果也就是純文本內容。

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
    var t=document.createTextNode("你好");//添加內容 createTextNode
    document.getElementById("middle").appendChild(t); 
</script>

個人前端之路-博客園
個人前端之路-博客園

(4)element.appendChild()
添加一個節點到指定的節點的子節點數組中,讀起來好象有點拗口,簡單地說就是將元素添加到指定的節點中
appendChild用法:
target.appendChild(newChild)
newChild做爲target的子節點插入最後的一子節點以後

var d=document.createElement("div");//createElement:建立一個HTML標記
    var t=document.createTextNode("你好");//添加內容 createTextNode
    d.appendChild(t);//把你好添加到div標記中   appendChild:添加子標記

(5)element.insertBefore()
insertBefore() 方法在您指定的已有子節點以前插入新的子節點。
insertBefore調用方法
parentElement.insertBefore(newElement,targetElement)
DOM提供了insertBefore()方法,要使用他須要作三件事:
1)新元素:須要插入的元素(newElement)
2)目標元素:在那個元素前插入(targetElement)
3)父元素:目標元素的父元素(parentElement)
例子:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
var a =document.createElement("span");
var b =document.createTextNode("你好");
a.appendChild(b);
var c = document.getElementById("middle");
c.parentNode.insertBefore(a,c);
/*
parentElement.insertBefore( newElement  ,  targetElement );
從上面語法能夠看出, 父元素, 新元素,目標元素 是 insertBefore使用的3要素。
其實咱們能夠無論  父元素, 由於 父元素咱們 能夠用 目標元素.parentNode 獲得。
那麼insertBefore就很好用了。只要給2個參數 : 新元素 和目標元素。
*/
</script>

個人前端之路-博客園
個人前端之路-博客園
(6)在元素後面插入一個新元素(DOM沒有提供方法:並無.insertAfter())

三.prepend()方法2-內部插入

第三段代碼

{
    var jquery_h3_list = $('#cnblogs_post_body h3');//若是你的章節標題不是h4,只須要將這裏的h4換掉便可
    if(jquery_h3_list.length>0)//若是你的章節標題h3存在,追加代碼建立目錄。
    {
        var content = '<a name="_labelTop"></a>';
        content    += '<div id="navCategory">';
        content    += '<p style="font-size:18px"><b>閱讀目錄</b></p>';
        content    += '<ul>';
        for(var i =0;i<jquery_h3_list.length;i++)
        {
            var go_to_top = '<div style="text-align: right"><a href="#_labelTop">回到頂部</a><a name="_label' + i + '"></a></div>';
            $(jquery_h3_list[i]).before(go_to_top);
            var li_content = '<li><a href="#_label' + i + '">' + $(jquery_h3_list[i]).text() + '</a></li>';
            content += li_content;
        }
        content    += '</ul>';
        content    += '</div>';
        if($('#cnblogs_post_body').length != 0 )
        {
            $($('#cnblogs_post_body')[0]).prepend(content);
        }
    }    
}
GenerateContentList();

個人前端之路-博客園

個人前端之路-博客園

咱們來繼續分析下

var content = '<a name="_labelTop"></a>';
        content    += '<div id="navCategory">';
        content    += '<p style="font-size:18px"><b>閱讀目錄</b></p>';
        content    += '<ul>';
        content    += '</ul>';
        content    += '</div>';

這段主要對應的是
個人前端之路-博客園

而下面這段代碼主要是生成li的代碼:

for(var i =0;i<jquery_h3_list.length;i++)
        {
            var go_to_top = '<div style="text-align: right"><a href="#_labelTop">回到頂部</a><a name="_label' + i + '"></a></div>';
            $(jquery_h3_list[i]).before(go_to_top);
            var li_content = '<li><a href="#_label' + i + '">' + $(jquery_h3_list[i]).text() + '</a></li>';
            content += li_content;
        }

個人前端之路-博客園

設置好html後,最後用.prepend(content);追加在文章的頭部。

四.prependTo()方法-內部插入

prependTo() 方法向每一個匹配元素內部的起始位置追加指定的內容。
實際上,使用這個方法是顛倒了常規的$(A).prepend(B)的操做,即不是把B追加到A中,而是把A追加到B中。
語法:
$(content).prependTo(selector)
Selector : Selector, Element, jQuery
一個選擇符,元素,HTML字符串,DOM元素數組,或者jQuery對象;符合的元素們會被插入到由參數指定的目標的末尾。
例子1代碼:

var $backToTopTxt = "返回頂部", $backToTopEle = $('<div class="backToTop"></div>').prependTo ($("body")).text($backToTopTxt).attr("title", $backToTopTxt)

解釋
建立代碼以下,位置位於被選元素body的起始位置.

用畫圖的方法表示:
例子1:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer" ></div>
<script>
$("<div>你好</div>").prependTo("#middle");
</script>


個人前端之路-博客園
這種寫法:也是能夠實現效果的:
$("<div>你好</div>").prependTo($("#middle"));
注意:下面這種寫法是錯誤的

例2:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
$(document.createTextNode("你好")).prependTo("#middle");
</script>


個人前端之路-博客園
這種寫法:也是能夠實現效果的:
$( document.createTextNode("你好")).prependTo($("#middle"));
例3:(選擇頁面上原有的一個元素插入到另外一位置)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script>
$("span").prependTo($("#middle "));
</script>



實驗了下也能夠實現效果:
$("span").prependTo("#middle");
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$("p").prependTo($(".add"));
</script>



實驗了下也能夠實現效果:
$("p").prependTo(".add");

五.append ()方法-內部插入

語法:
.append(String/Element/jQuery)
指定的內容能夠是:html字符串、DOM元素(或數組)、jQuery對象、函數(返回值)。
注意:插入每一個匹配元素裏面的末尾(在內部)
例:
$('body').append('<a href="#" id="toTop" style="bottom: 77px; "></a>');
個人前端之路-博客園
例子1:( html字符串)
用畫圖的方法表示
代碼:

<div id="header"></div>
<div id="middle"></div>
<div id="footer"></div>
<script>
$("#middle").append("<div>你好</div>");`
</script>

個人前端之路-博客園
例子2:(DOM元素)
用畫圖的方法表示
代碼:

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"></div>
<script>
$("#middle").append(document.createTextNode("你好"));
</script>

個人前端之路-博客園
個人前端之路-博客園
例子3:(jQuery對象)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。
代碼:

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script type="text/javascript" src="jquery-1.11.3.min.js"></script>
<script>
$("#middle").append($("span"));
</script>

個人前端之路-博客園
個人前端之路-博客園
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。
用畫圖的方法表示
代碼:

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$(".add").append($("p"));
</script>

個人前端之路-博客園
個人前端之路-博客園
例四:(函數)
語法
$(selector).append (function(index,html))
第一個參數就是當前元素在匹配元素中的索引,第二個參數就是該元素當前的內部html內容(innerHTML)。函數的返回值就是須要爲該元素追加的內容(能夠是html字符串、DOM元素、jQuery對象)。
注意:只有第一個參數能夠爲自定義函數,用於遍歷執行。若是以後的參數也爲函數,則調用其toString()方法,將其轉爲字符串,並視爲html內容。
舉例1:

<div id="header" class="add"> 
header</div>
<div id="middle" class="add">
middle</div>
<div id="footer" class="add">
footer</div>
<button>結尾添加內容</button>
<script>
 $(document).ready(function(){
  $("button").click(function(){
    $(".add").append(function(n){
      return "<b>你好 " + n + "</b>";
     });
   });
 }); 
</script>




舉例2:

<div id="header" class="add"> 
1.</div>
<div id="middle" class="add">
2.</div>
<div id="footer" class="add">
3.</div>
<script>
 // 定義一個數組  
    var books = [  
        {name: "Java" , price:109},  
        {name: "Java EE" , price:89},  
        {name: "Android" , price:89}]  
    // 使用函數爲不一樣div元素動態添加不一樣的內容  
    $(".add").append(function(i)  
    {  
        // i表明jQuery對象中正在迭代處理的元素的索引,所以爲0、一、2...  
        return "<b>書名是《" + books[i].name  
            + "》,價格是:" + books[i].price;  
    })  
</script>



六.appendTo方法-內部插入

appendTo() 方法在被選元素的結尾(仍然在內部)插入指定內容。
實際上,使用這個方法是顛倒了常規的$(A).append(B)的操做,即不是把B追加到A中,而是把A追加到B中。
語法:
$(content).appendTo(selector)
Selector : Selector, Element, jQuery
一個選擇符,元素,HTML字符串,DOM元素數組,或者jQuery對象;符合的元素們會被插入到由參數指定的目標的末尾。

例子1代碼:

var $backToTopTxt = "返回頂部", $backToTopEle = $('<div class="backToTop"></div>').appendTo($("body")).text($backToTopTxt).attr("title", $backToTopTxt)

解釋
建立代碼以下,位置位於被選元素body的結尾部分.

個人前端之路-博客園
例子2代碼:

function CreateDom() {
   var select = $("<select/>").appendTo($("body"));
   var option1 = $("<option value=\"1\">text1</option>").appendTo(select);
   var option2 = $("<option value=\"2\">text2</option>").appendTo(select);
   var option3 = $("<option value=\"3\">text3</option>").appendTo(select);
   var text = $("<input type=\"text\">").css({ "width": "150px", "border": "1px lightgrey solid" }).appendTo($("body"));
   var checkbox = $("<input type=\"checkbox\" />").appendTo($("body"));
   var ul = $("< ul/>").appendTo($("body"));
   var li = $("<li>li1</li>").appendTo(ul);
   var li = $("<li>li2</li>").appendTo(ul);
}

個人前端之路-博客園
用畫圖的方法表示:
例子1:
代碼:

<div id="header"></div>
<div id="middle"></div>
<div id="footer" ></div>
<script>
$("<div>你好</div>").appendTo("#middle");
</script>

個人前端之路-博客園

這種寫法:也是能夠實現效果的:

$("<div>你好</div>").appendTo($("#middle"));
注意:下面這種寫法是錯誤的

例2:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
$(document.createTextNode("你好")).appendTo("#middle");
</script>



這種寫法:也是能夠實現效果的:
$( document.createTextNode("你好")).appendTo($("#middle"));
例3:(選擇頁面上原有的一個元素插入到另外一位置)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script>
$("span").appendTo($("#middle"));
</script>



實驗了下也能夠實現效果:
$("span").appendTo("#middle");
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$("p").appendTo($(".add"));
</script>



實驗了下也能夠實現效果:
$("p").appendTo(".add");
拓展:

1.以前在問題問了下代碼中:
var select = $("<select/>").appendTo($("body"));
爲何寫的是<select/>,可是js在頁面的body裏仍是生成了
<select></select>,不是很明白?
其實這是由於JQuery會自動的完善html代碼,也就是說,假如你要執行如下操做
$('content').append('<p>CSDN');
那麼實際插入到標記中的html代碼是
<p>CSDN</p>
另外
HTML 標籤是由尖括號包圍的關鍵詞,好比 <html> ,一般是成對出現的,好比 <b></b>。這些成對出現的HTML 標籤,第一個標籤是開始標籤,第二個標籤是結束標籤。
而那些沒有關閉標籤的空元素如<br />在開始標籤中添加斜槓,好比 <br />,是關閉空元素的正確方法。
而這裏的<select>並非自閉合標籤,它的完整的寫法實際上應該是<select></select>,而<select/>這種寫法實際上html標籤並無閉合,至關於只寫了開始標籤<select>,JQuery會自動的完善html代碼,因此追加的代碼是完整的<select></select>。可是要記得若是是隻寫了閉合標籤,開始標籤沒有寫的話,JQuery是不會完善html代碼的,如這樣的
$("</select>").appendTo($("body"));
結果頁面上並無被插入代碼。
2.appendTo方法與append方法區別
appendTo() 方法與appendT方法都是在被選元素的結尾(仍然在內部)插入指定內容。
不一樣的是:
append方法常規的\((A).append(B)的操做是把B追加到A中, 而appendTo方法\)(A).append(B)的操做,是把A追加到B中。
即:
append()前面是要選擇的對象,後面是要在對象內插入的元素內容,效率要高點, appendTo()前面是要插入的元素內容,然後面是要選擇的對象
具體的我就很少講了,還不明白的話能夠參考文章jQuery的append和appendTo

七.before()方法和insertBefore()方法-外部插入

before()方法來動態添加代碼
向元素的前邊添加html代碼,若是元素前面有元素了,那將前面的元素前移,而後將html代碼插入。
語法:
.before(String/Element/jQuery)
指定的內容能夠是:html字符串、DOM元素(或數組)、jQuery對象、函數(返回值)
仍是上一個代碼
在生成li的代碼中,其中有這麼幾句

var go_to_top = '<div style="text-align: right"><a href="#_labelTop">回到頂部</a><a name="_label' + i + '"></a></div>';
$(jquery_h3_list[i]).before(go_to_top);

個人前端之路-博客園
個人前端之路-博客園

能夠看出追加的代碼在jquery_h3_list[i]元素代碼的前面,與他是兄弟關係。
例子1:(html字符串)
用畫圖的方法表示
代碼:

<div id="header"></div>
<div id="middle"></div>
<div id="footer"></div>
<script>
$('#middle').before('<div>你好</div>');
</script>

個人前端之路-博客園
例子2:(DOM元素)
用畫圖來表示下
代碼:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
$('#middle').before(document.createTextNode("你好"));
</script>

個人前端之路-博客園
個人前端之路-博客園
例子3:(jQuery對象)
注意:
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。
代碼:
用畫圖的方法表示
代碼:

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"></div>
<script>
$("#footer").before($("p"));
</script>

個人前端之路-博客園
個人前端之路-博客園
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。
用畫圖的方法表示
代碼:

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$(".add").before($("p"));
</script>

個人前端之路-博客園
個人前端之路-博客園
例四:(函數)
語法:
$(selector). before (function(index))
使用function(index)函數迭代處理jQuery所包含的每一個節點,在每一個節點的前面依次添加function(index)函數的返回值。index - 可選。接收選擇器的 index 位置。
舉例:

<div id="header" class="add"> 
header</div>
<div id="middle" class="add">
middle</div>
<div id="footer" class="add">
footer</div>
<script>
  // 定義一個數組  
    var books = [  
        {name: "Java" , price:109},  
        {name: "Java EE" , price:89},  
        {name: "Android" , price:89}]  
    // 使用函數爲不一樣div元素動態添加不一樣的內容  
    $(".add").before(function(i)  
    {  
        // i表明jQuery對象中正在迭代處理的元素的索引,所以爲0、一、2...  
        return "<b>書名是《" + books[i].name  
            + "》,價格是:" + books[i].price;  
    })  
</script>



insertBefore()方法來動態添加代碼
將JQuery封裝好的元素插入到指定元素的前面,若是元素前面有元素了,那將前面的元素前移,而後將JQuery對象插入;
語法:
.insertBefore(target)
target
類型: Selector, Element, jQuery
一個選擇器,元素,HTML字符串或者jQuery對象,匹配的元素將會被插入在由參數指定的目標後面。
用畫圖的方法表示
例子1:
代碼:

<div id="header"></div>
<div id="middle"></div>
<div id="footer" ></div>
<script>
$("<div>你好</div>").insertBefore("#middle ");


個人前端之路-博客園
這種寫法也是能夠實現效果的:
$("<div>你好</div>").insertBefore($("#middle "));

注意:下面這種寫法是錯誤的

例2:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
$(document.createTextNode("你好")).insertBefore ("#middle ");
</script>


這種寫法:也是能夠實現效果的:
$(document.createTextNode("你好")). insertBefore($("#middle "));
例3:(選擇頁面上原有的一個元素插入到另外一位置)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script>
$("span").insertBefore($("#middle")); 
</script>



實驗了下也能夠實現效果:
$("span"). insertBefore("#middle ");

(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$("p").insertBefore($(".add")); 
</script>


實驗了下也能夠實現效果:
$("p").insertBefore(".add");

八.after方法和insertAfter()方法-外部插入

after方法:向元素的後邊添加html代碼,若是元素後面有元素了,那將後面的元素後移,而後將html代碼插入。
語法:
.after(String/Element/jQuery)
指定的內容能夠是:html字符串、DOM元素(或數組)、jQuery對象、函數(返回值)。
例子1:(html字符串)

<div id="header"></div>
<div id="middle"></div>
<div id="footer"></div>
<script>
$("#middle").after("<div>你好 </div>");
</script>

個人前端之路-博客園
個人前端之路-博客園
例子2:(DOM元素)

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"></div>
<script>
$("#middle").after(document.createTextNode("你好")); 
</script>

個人前端之路-博客園
個人前端之路-博客園
例子3:(jQuery對象)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。
代碼:

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script>
$("#middle").after($("span"));
</script>

個人前端之路-博客園
個人前端之路-博客園
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。
用畫圖的方法表示
代碼:

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$(".add").after($("p"));
</script>

個人前端之路-博客園
個人前端之路-博客園
例子4:(函數)
語法:
$(selector).after(function(index))
使用function(index)函數迭代處理jQuery所包含的每一個節點,在每一個節點的後面依次添加function(index)函數的返回值。index - 可選。接收選擇器的 index 位置。
舉例1:

<div id="header"></div>
<div id="middle"><span class="add">hello</span></div>
<div id="footer" class="add"></div>
<script>
$(".add").after( function(index, innerHTML){
    return '<strong>你好' + (index + 1) + '</strong>';
} );



舉例2:

<div id="header" class="add"> 
header</div>
<div id="middle" class="add">
middle</div>
<div id="footer" class="add">
footer</div>
<script>
  // 定義一個數組  
    var books = [  
        {name: "Java" , price:109},  
        {name: "Java EE" , price:89},  
        {name: "Android" , price:89}]  
    // 使用函數爲不一樣div元素動態添加不一樣的內容  
    $(".add").after(function(i)  
    {  
        // i表明jQuery對象中正在迭代處理的元素的索引,所以爲0、一、2...  
        return "<b>書名是《" + books[i].name  
            + "》,價格是:" + books[i].price;  
    })  
</script>



insertAfter()方法:將JQuery封裝好的元素插入到指定元素的後面,若是元素後面有元素了,那將後面的元素後移,而後將JQuery對象插入
語法:
.insertAfter (target)
target
類型: Selector, Element, jQuery
一個選擇器,元素,HTML字符串或者jQuery對象,匹配的元素將會被插入在由參數指定的目標後面。
用畫圖的方法表示
例子1:
代碼:

<div id="header"></div>
<div id="middle"></div>
<div id="footer" ></div>
<script>
$("<div>你好</div>").insertAfter("#middle ");
</script>

個人前端之路-博客園

這種寫法:也是能夠實現效果的:
$("<div>你好</div>").insertAfter($("#middle "));

注意:下面這種寫法是錯誤的

例2:

<div id="header"></div>
<div id="middle">hello</div>
<div id="footer"></div>
<script>
$(document.createTextNode("你好")).insertAfter ("#middle ");
</script>



這種寫法也是能夠實現效果的:
$(document.createTextNode("你好")).insertAfter($("#middle "));
例3:(選擇頁面上原有的一個元素插入到另外一位置)
(1)若是追加的內容是當前頁面中的某些元素,那麼這些元素將從原位置上消失。簡而言之,這是一個移動操做,而不是複製操做。

<div id="header"></div>
<div id="middle"><p>hello</p></div>
<div id="footer"><span>你好</span></div>
<script>
$("span").insertAfter($("#middle")); 
</script>



實驗了下也能夠實現效果:
$("span").insertAfter("#middle ");
(2)追加的內容是當前頁面中的某些元素,且有多個目標元素,那麼這些元素內容將被複制而後插入到每一個目標裏面,原位置內容上消失。

<div id="header" class="add"></div>
<div id="middle"><p>hello</p></div>
<div id="footer" class="add"></div>
<script>
$("p").insertAfter($(".add")); 
</script>


實驗了下也能夠實現效果:
$("p").insertAfter(".add");

注意:本文爲原創,轉載請以連接形式標明本文地址 ,謝謝合做。
本文地址:http://www.cnblogs.com/wanghuih/p/5755932.html

相關文章
相關標籤/搜索