2009-11-12 4 views
16

jQuery ile iyi bir şey, sözdiziminin (örneğin, zincirleme sırasında), komut dosyanızın biçimlendirme ve okunabilirlik kolaylığı için çok sayıda satır kesmesine izin vermesidir.jQuery dizgileri, birden çok satıra yayılmış biçimlendirmelidir

Çok sayıda HTML eklediğinde eşdeğer/tercih edilen bir yöntem var mı?

Örneğin, böyle bir şey yapmak güzel olurdu: çalışmak ama buna benzer bir şey var demektir

$("#theObject") 
    .doSomething() 
    .append(" 
     <div> 
      <div> 
        Hello World 
      </div> 
     </div> 
    ") 

bir jQuery komut dosyası içinde biçimlendirilmiş olan daha kolay HTML okunmasını sağlamak için ?

+0

+1 İyi soru. Bu benim için her zaman sinir bozucu bir durum oldu. –

cevap

31

her satırın sonunda bir \ ekle

$("#theObject").doSomething() 
.append(" 
    <div>\ 
     <div>\ 
       Hello World\ 
     </div>\ 
    </div>\ 
") 

Düzenleme:

ES6 (ES2015) kullanıyorsanız, şimdi template literals kullanabilirsiniz.

+0

Bu işe yarayacak !? Yani, bu jQuery merkezli sözdizimi mi? –

+0

Geçerli olduğunu iddia ediyorum. Hemen hemen her başka programlama dilinde de çalışır. –

+1

Evet, geçerli javascript. Ben geçmişte tüm tarayıcılarda çalışmak için eğik çizgiler önce boşluk koymak zorunda kaldım düşünüyorum –

6
$("#theObject") 
.doSomething() 
.append(
    "<div>" 
     +"<div>" 
       +"Hello World" 
     +"</div>" 
    +"</div>" 
); 

O kadar olduğu gibi, bir var gibi .Append() içerik yüklemek için en iyi uygulamayı olurdu:

var append_me = 
    "<div>" 
     +"<div>" 
       +"Hello World" 
     +"</div>" 
    +"</div>"; 

$("#theObject").doSomething().append(append_me); 
+0

iamkoa ... güzel! Basit ve bariz bir şekilde göze çarpıyordu, ama dikkate almadığım bir şey. –

0
var str = '<div>'; 
str += '<div>'; 
str += 'Hello World'; 

$("#theObject") 
    .doSomething() 
    .append(str) 
+0

İlk düşüncem buydu. Mükemmel değil, her şeyi tek bir çizgiye sokmaktan daha okunaklı. Yine de bir performans isabeti var mı? Bildirilen bir değişkeni defalarca birleştirmek, performansı etkiliyor mu? –

+0

Geçerli tarayıcılarda bulunmamalıdır. Daha önce bir performans isabeti vardı ve en iyi yol, dizeleri bir diziye sokmak ve sonunda onları birleştirmek oldu. Ancak yine de birkaç test yaptım ve çoğu tarayıcı şimdi dizgi birleştirmeyi optimize ediyor. – Dhana

1

Dizeleri kullanarak Javascript'te güzel bir HTML ağacı yapısını temsil etmenin zarif bir yolu yoktur. Her zaman çirkin olacak olan bir birleştirme dizisi kullanmanız gerekecek ve bunu korkunç bir şekilde gerçekleştirdiğini ekleyebilir miyim? aynı adı + ".txt",

  1. Ben senin JS dosyası ile aynı konumda buna kaydet
  2. istediğiniz tüm boşluk ile benim favori editörü benim işaretlemeyi yazın: Bu benim yaptığım uzatma
  3. Editörüm sahiptir bulmak ve değiştir RegEx'in ile, bu yüzden bunu bir değiştir tüm >[\s]*<
  4. kopyala yerine geri alır değişken bir dize
  5. olarak benim JavaScript dosyası üzerinde tek çizgili sonuç gibi bir şeyle .txt dosyasında

Bu, elbette, işaretlemeyi değiştirdiğinizde, değiştirmeyi yeniden yapmanız ve kopyalamanız gerekeceğini ima eder. Yine de bu alışkanlığa çok çabuk girdim. Ayrıca jQuery bunu daha hızlı işleyebilecek çünkü daha az karakter ayrılacak. jQuery, ve dize hazır kullanıyorsanız

+0

Teşekkürler, Josh. Evet, kesinlikle işe yarardı ama amaçlardan biri de bunu diğer insanlar için okunabilir hale getirmektir. İdeal olarak, satır sonu ve girinti, diğerleri tarafından gelecekteki bakım için .js bloğu içinde korunur. –

4

ayrıca sadece doğrudan sayfada bu öğeleri oluşturmak ve bunları gizlemek, daha sonra onları yazarak DOM bu öğelerden yerine bakın olabilir, html elemanlarını olacak dizeler gibi. Böyle kodunuzu yeniden sonra

<div id="myContent" style="display: none;"> 
    <div> 
     <div> 
      Hello World 
     </div> 
    </div> 
</div> 

Ve: Sadece başvuru gerekiyor eğer

$("#theObject") 
.doSomething() 
.append(
    $('#myContent').html(); 
); 

Alternatif gerçek DOM öğesinin kendisini eklemek olabilir Örneğin, sayfanızda bu koyabilirsiniz Her seferinde içeriğini kopyalamak yerine bir kez.

+0

Aslında, bunun sadece HTML öğeleriyle sınırlı olmayacağını tahmin ediyorum ... tabii ki hiçbir şeyi #myContent içine koyabilirsiniz. – Rudism

+0

@Rudism: çok doğru. Bu bazen yararlıdır. –

+0

Evet - DOM'ı mümkün olduğunca bu şekilde kullanmak gerçekten faydalı. Büyük bir istisna uzun dizeleri kullanan ve bir sitenin birçok sayfasına çağrılan kitaplık kodu yazarken olabilir. Kitaplık yalnızca bir kez yüklenir (doğru önbelleğe alma ilkesi varsayar), bu nedenle sayfa içeriğinin kendisinden daha uzun dizeleri koymak daha verimlidir. –

2

Bu daha kolay yapılabilir!

kullanmak "+" veya "/" yapmayın.

Kullanım backtick: `
enter image description here

$("#theObject").doSomething() 
.append(` 
    <div> 
     <div> 
       Hello World 
     </div> 
    </div> 
`) 
+0

Bu, yalnızca es2015 çalışır. – Geuis