2013-06-27 21 views
18

listeden niteliklerini ve bir veri aşağıdaki koda benzer özellik:JQuery tüm verileri almak uzun dinamik olarak oluşturulmuş listesine aynı sınıf tanımlayıcı ile her biri

<ul> 
    <li class="list" data-id="123">One</li> 
    <li class="list" data-id="124">Two</li> 
    <li class="list" data-id="125">Three</li> 
    <li class="list" data-id="126">Four</li> 
    .....etc 
</ul> 

ne elde etmek çalışıyorum elde etmektir tüm data-id değerler ve şu isimleri de biçimlendirmek: Bu daha sonra ajax bir sayfaya devredilecek ve kimliği en veritabanında varlığını kontrol

123|124|125|126....etc 

.

var delimited_data=""; 
$('.list').each(function(){ 
    delimited_data+=$(this).data('id')+"|"; 
}); 
console.log(delimited_data); 

Bu soruyu soran sebebi otomatik olarak 10 dakika sonra farklı kullanıcılara liste sütunlarında öğeleri dağıtır canlı bir sistemde çalışıyorum olmasıdır. Ben sadece hayır .list sınıflar sayfasında bulunmaktadır kod doğru yolu :)

Ben de kontrol etmeniz gerekir gidiyor emin olmak için ihtiyacımız olan (yani - sorgusu yapmak için bir yol) delimited_data tamamen olup olmayacağını boş olan öyle olacağını eminim.

Bu durumda, .each()'u kullanmanın daha iyi bir yolu var mıdır, çünkü yukarıdaki işlev her 30 saniyede bir çalıştırılacağını akılda tutmakta oldukça yavaş olabilir.

+1

'.list' öğesinin varlığını kontrol etmek için,' .list' –

cevap

46

Bir dizi dönmek .map kullanabilirsiniz:

var dataList = $(".list").map(function() { 
    return $(this).data("id"); 
}).get(); 

console.log(dataList.join("|")); 

Demo: http://jsfiddle.net/RPpXu/

+0

'un uzunluğuna bir denetim yapın. Bunu yapmak için düzgün bir yol gibi görünüyor - kullanılmıyor .map() önce) – Sideshow

+0

'.map' işlevini seviyorum birçok kez yardımcı oluyor! – tymeJV

+0

bu def benim için en iyi cevaptır. şerefe. –

5

kullanın bu:

var array = []; 

$('li.list').each(function() { 
    array.push($(this).data('id')); 
}) 

var joined = array.join('|'); 
1

Değil Sorunuza bir cevap ama bu ı sona erdi budur arayışında bu sayfada ve yardımcı olacağını rağmen başkasının :-)

var arrayOfObj = $('input').map(function() { 

    return { 
      name : $(this).attr('name'), 
      data : $(this).data('options'), 
      value : $(this).val(), 
      id : $(this).attr('id') 
     } 

}).get(); 
console.log(arrayOfObj) 

Bu giriş
alkış taklit nesnelerinin bir dizi döner!

İlgili konular