先看下思導圖,總體瞭解下,而後咱們再來學習。javascript
如今咱們來看一下幾段代碼,而後根據這幾段代碼咱們來學習一下如何正確的學習動態添加html。css
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(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())
第三段代碼
{ 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() 方法向每一個匹配元素內部的起始位置追加指定的內容。
實際上,使用這個方法是顛倒了常規的$(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(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() 方法在被選元素的結尾(仍然在內部)插入指定內容。
實際上,使用這個方法是顛倒了常規的$(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()方法來動態添加代碼
向元素的前邊添加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方法:向元素的後邊添加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