亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jquery .html()vs .append()

jquery .html()vs .append()

米脂 2019-09-18 19:44:01
讓我們說我有一個空div:<div id='myDiv'></div>這是:$('#myDiv').html("<div id='mySecondDiv'></div>");同樣如下:var mySecondDiv=$("<div id='mySecondDiv'></div>");$('#myDiv').append(mySecondDiv);
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

無論何時將HTML字符串傳遞給任何jQuery方法,都會發生以下情況:


創建一個臨時元素,我們稱之為x。x innerHTML被設置為您傳遞的HTML字符串。然后jQuery將每個生成的節點(即x childNodes)轉移到新創建的文檔片段,然后它將在下次緩存。然后它將片段childNodes作為新的DOM集合返回。


請注意,它實際上要復雜得多,因為jQuery會進行一系列跨瀏覽器檢查和各種其他優化。例如,如果你只是<div></div>通過jQuery(),jQuery將采取一個捷徑,只是做document.createElement('div')。


編輯:要查看jQuery執行的大量檢查,請查看此處,此處和此處。


innerHTML是一般的快的方法,雖然不要讓支配你做什么,所有的時間。jQuery的方法并不element.innerHTML = ...像我提到的那么簡單- 有一堆檢查和優化發生。


正確的技術很大程度上取決于具體情況。如果你想創建大量相同的元素,那么你要做的最后一件事是創建一個大規模的循環,在每次迭代時創建一個新的jQuery對象。例如,使用jQuery創建100個div的最快方法:


jQuery(Array(101).join('<div></div>'));

還要考慮可讀性和維護性問題。


這個:


$('<div id="' + someID + '" class="foobar">' + content + '</div>');

......是很多難以維持比這個:


$('<div/>', {

    id: someID,

    className: 'foobar',

    html: content

});


查看完整回答
反對 回復 2019-09-18
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

她們不一樣。第一個替換 HTML而不首先創建另一個jQuery對象。第二個為第二個div創建一個額外的jQuery包裝器,然后將它附加到第一個div 。


一個jQuery Wrapper(每個例子):


$("#myDiv").html('<div id="mySecondDiv"></div>');


$("#myDiv").append('<div id="mySecondDiv"></div>');

兩個jQuery Wrappers(每個例子):


var mySecondDiv=$('<div id="mySecondDiv"></div>');

$('#myDiv').html(mySecondDiv);


var mySecondDiv=$('<div id="mySecondDiv"></div>');

$('#myDiv').append(mySecondDiv);

你有幾個不同的用例。如果你想要替換內容,那.html是一個很棒的電話,因為它相當于innerHTML = "..."。但是,如果您只想附加內容,$()則不需要額外的包裝器。


如果您需要div稍后操作添加的,請僅使用兩個包裝器。即使在這種情況下,您仍然可能只需要使用一個:


var mySecondDiv = $("<div id='mySecondDiv'></div>").appendTo("#myDiv");

// other code here

mySecondDiv.hide();


查看完整回答
反對 回復 2019-09-18
  • 3 回答
  • 0 關注
  • 658 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號