[英]Is there a jQuery equivalent of MooTools' Element() constructor?
我將為我的網站啟動一個javascript報告引擎,並已開始使用MooTools進行一些原型設計。 我真的很喜歡能夠做這樣的事情:
function showLeagues(leagues) {
var leagueList = $("leagues");
leagueList.empty();
for(var i = 0; i<leagues.length; ++i) {
var listItem = getLeagueListElement(leagues[i]);
leagueList.adopt(listItem);
}
}
function getLeagueListElement(league) {
var listItem = new Element('li');
var newElement = new Element('a', {
'html': league.name,
'href': '?league='+league.key,
'events': {
'click': function() { showLeague(league); return false; }
}
});
listItem.adopt(newElement);
return listItem;
}
據我所知,jQuery的“采用”類型方法僅采用html字符串或DOM元素。 是否有與MooTools 元素等效的jQuery?
從語法上講,使用jQuery來做可能更好,但是使用起來可能更有效
document.createElement('li')
並消除了至少進行字符串比較測試和次要令牌解析的需要。
如果您堅持要生成許多dom節點, flydom也可能會激發您的興趣。 (理論上應該更快,但是還沒有測試過)
注意:在內部,jQuery(“ <html> </ html>”)看起來可以有效地做到這一點(過於簡化):
jQuery(matcher) --> function(matcher)
{
return jQuery.fn.init(matcher) --> function(matcher)
{
return this.setArray(
jQuery.makeArray(
jQuery.clean(matcher) --> function(matcher)
{
div = document.createElement('div');
div.innerHTML = matcher;
return div.childNodes;
}
)
);
}
}
因此,人們會假定“ document.createElement
”因此是一個“要求”,如果您知道要刪除的內容(即:不使用$( datahere )
解析某些第三者數據),那么document.createElement
將會是合理的,並且加快速度,避免大量正則表達式和緩慢的字符串操作。
相比之下: jQuery(document.createElement('div'))
看起來很有效(過度簡化):
jQuery(matcher) --> function(matcher)
{
return jQuery.fn.init(matcher) --> function(matcher)
{
this[0] = matcher;
this.length = 1;
return this;
}
}
這是jQuery中的同一件事。 基本上,要創建一個新元素,只需放入所需的HTML。
function showLeagues(leagues) {
var $leagueList = $("#leagues");
$leagueList.empty();
$.each(leagues, function (index, league) {
$leagueList.append(getLeagueListElement(league));
});
}
function getLeagueListElement(league) {
return $('<li></li>')
.append($('<a></a>')
.html(league.name)
.attr('href', '?league=' + league.key)
.click(function() {
showLeague(league);
return false;
})
)
;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.