2010-09-02 20 views
8

içine.jQuery - birden çekmeye kolay yolu (val) bir dize dinamik olarak üretilen metin girişlerinin bilinmeyen sayıda göz önüne alındığında

for (var i = 0; i < numInputs2Render; i++) { 
    collectEmails = collectEmails + '<input type="text" id="Email' + i + '" name="Email' + i + '">'; 
} 

ben kombine giriş değerleri bir virgülle ayrılmış dize üretmek gerekir. JQuery bana tek adımlı bir çözüm mü veriyor yoksa dizeyi yinelemeli ve el ile oluşturmalı mıyım? (El eğer ... var bu nasıl bakarsan?)

thx

cevap

23

Bunu, .map() kullanabilirsiniz:

var emails = $("input[name^=Email]").map(function() { return this.value; }) 
            .get().join(','); 

Bu girdileri bulmak için attribute-starts-with selector kullanır, sonra .map() almak bir diziye değerler .join() tek bir dizeye dönüştürebilirsiniz.

bir kapta iseniz

, bir <div id="Emails"> Eğer seçici aşağı $("#Emails input") gibi bir şey için ince, ben işaretlemenizi görmeden kesin diyemem açabileceği, ancak bir kap seçici ile her şey daha verimli hale getirecek.

+2

+1 48 saniye daha hızlı;) Elemanlara bir sınıf da eklenebilir ... –

+0

@Felix - Anlaşıldı, ya da biraz daha fazla içeriğimiz olsaydı, büyük ihtimalle her ikisi de tek bir kapsayıcıda verildi. üretiliyor. –

+0

Gerçekten - kısaltmak amacıyla OP'den 'class = emailInput' çektim. Bu cevabı nasıl değiştirir? - çok müteşekkirim! – justSteve

İlgili konular