jQuery'de biraz karmaşık HTML öğeleri oluşturmak için genel en iyi uygulama var mı? Birkaç farklı yol denedim. appendTo her şey başka türlü kendi ismini o uçları ihtiyacı böylece eşleşen her elemana eklemek istiyor berijQuery - Karmaşık HTML Fragmanları Oluşturmaya Yönelik En İyi Uygulama
var badge = $(document.createElement("div")).attr("class", "wrapper1").appendTo("body");
$(document.createElement("div")).attr("class", "wrapper2").appendTo(".wrapper1");
$(document.createElement("table")).attr("class", "badgeBody").appendTo(".wrapper2");
$(document.createElement("tr")).attr("class", "row1").appendTo(".badgeBody");
$(document.createElement("td")).appendTo(".row1");
$(document.createElement("span")).attr("class", "badgeUnlocked").text("UNLOCKED! ").appendTo("td");
$(document.createElement("td")).attr("class", "badgeTitleText").appendTo(".row1");
$(document.createElement("span")).attr("class", "badgeTitle").text(name).appendTo(".badgeTitleText");
$(document.createElement("tr")).attr("class", "row2").appendTo(".badgeBody");
$(document.createElement("td")).appendTo(".row2");
$(document.createElement("img")).attr("src", imgUrl).appendTo(".row2 td");
$(document.createElement("td")).attr("class", "badgeText").appendTo(".row2");
$(document.createElement("span")).attr("class", "badgeDescription").text(description).appendTo(".badgeText");
Bu kaba olabilir:
Önce createElement ve birlikte olanların sürü zincirleme AppendTo ile ve benzeri çalıştı her yerde tekrar tekrar yer almaya başladı. IE'de I ($ (badgeFragment) .text()) genellikle bir uyarı koymak ne zaman olmasına rağmen,
var badgeFragment = [
'<div><div id="'+ closeId+'" class="closeTab">X</div>',
'<div id="'+ badgeId+'" class="wrapper1">',
'<div class="wrapper2">',
'<div class="badgeBody">',
'<div class="badgeImage">',
'<img src="'+ imgUrl +'">',
'</div>',
'<div class="badgeContents">',
'<div class="badgeUnlocked">ACHIEVEMENT UNLOCKED: </div>',
'<div class="badgeTitle">'+ name +'</div>',
'<div id="'+ textId+'" class="badgeDescription">'+ description +'</div>',
'</div>',
'<div style="clear:both"></div>',
'</div></div></div></div></div>',
]
badgeFragment = $(badgeFragment.join(''));
Bu oldukça iyi iş gibi görünüyor:
Sonra bir dizi oluşturma ve birlikte katılmadan çalıştı boş geri döndü. (Bu daha büyük bir sorunun hatalarını ayıklamanın bir parçasıydı).var badgeFragment =
'<div><div id="'+ closeId+'" class="closeTab">X</div>' +
'<div id="'+ badgeId+'" class="wrapper1">' +
'<div class="wrapper2">' +
'<div class="badgeBody">' +
'<div class="badgeImage">' +
'<img src="C:/Users/Ryan/Documents/icons/crystal_project/64x64/apps/chat.png">' +
'</div>' +
'<div class="badgeContents">' +
'<div class="badgeUnlocked">ACHIEVEMENT UNLOCKED: </div>' +
'<div class="badgeTitle">test</div>' +
'<div id="'+ textId+'" class="badgeDescription">test</div>' +
'</div>' +
'<div style="clear:both"></div>' +
'</div></div></div></div></div>';
genellikle bu yöntemlerden biridir: Dev dize birleştirme - Öyle denemek ve bu üçüncü yöntemi denedik sorun değildi emin olmak için açıkçası jQuery (Ve hatta JavaScript gerçekten) biraz yeniyim Diğerlerinden daha iyi sayılır mı? Çeşitli profilleyicilerle pek iyi değilim, bu yüzden kendimi nasıl doğrulayacağımı bilmiyorum. Tüm bu yöntemlerin çapraz tarayıcı uyumlu olup olmadığı sorusu da vardır.
IE Alert'ünüz çünkü ".text()" DOM alt ağacının tüm içeriğini almaz boş geldi. $ (BadgeFragment) .html() – Pointy