2012-09-03 25 views
5

jQuery'yi kullanarak yarı karmaşık bir HTML div öğesi oluşturmak (en azından JSON verileriyle bir şablonun bir örneğini doldurmak ve bir listeye eklemek). Veriler JSON formatındadır (eğer önemliyse) ve her bir ebeveyn girişi için bir atlı karınca-tipi elemanın başka bir divini eklemek istiyorum.jQuery dinamik olarak karmaşık HTML parçaları oluşturmak için

$('#list').append('<li><div id=" + entry.id +"><span id="highlight> + entry.name + <span/><div id="picture" .... 

(bir noktayı sadece var orada bahane hatalarını) çalışmak fakat bakımı çok zor olacaktır: örneğin

Uzun beyan. Daha verimli bir yol olmalı.

Teşekkürler.

cevap

6

Sen javascript çiftleşmiş dillere arıyoruz - orada ton orada vardır:

  • underscore.js;
  • mustache.js;
  • jade;
  • handlebars.js;

    <p>Hello <strong><%=user.name %> <%=user.lastname %></strong></p> 
    

    Tarafından:

    var myUser = { name : 'John', lastname : 'Doe' }; 
    
    $('#awesomeDiv').html(
        someTemplateFunction({ user : myUser }) 
    ); 
    

    Ve someTemplateFunction() gibi vücut şey yapacak:

  • daha birçok ...

fikri verileri ve ayrı görüşünü tutmaktır tutan Şablon kütüphanesinin bu şablonu [DOM'den veya harici bir dosyadan geliyor] ayrıştırabildiğini kastediyorum ve yeni DOM öğelerine dönüştürmek için.

Benim seçimim underscore.js çünkü çok az kullanışlı ve kullanışlı bir kütüphane, etrafınıza bakmaktan çekinmeyin.

+0

Tam olarak ihtiyacım olan şey, teşekkürler, şimdi onları kontrol edecektir. – adamK

0

Bilmiyorum' Yapıyor ama yakın zamanda benzer bir sorun vardı ve ben eklemek için html ile benim js 'polize etmek istemedim. Benim çözümüm, sayfadaki tüm html'leri eklemek ve gerektiğinde, onu açığa çıkarabileceğim ya da bazı durumlarda istediğim div 'ı kopyalayabilmem için gizlenmekti.

+0

Bu, benim klonlayabildiğim gizli bir div sahip olduğumu düşündüğüm bir şey. Sadece daha temiz seçenekler olabileceğini düşündüm. – adamK

+0

Çoğu durumda, kesinlikle daha temiz seçenekler olabileceğine inanıyorum. Ne yazık ki, benim için hiç bulunamadı. – Robyflc

İlgili konular