3 回答

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
});

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();
- 3 回答
- 0 關注
- 658 瀏覽
相關問題推薦
添加回答
舉報