2013-09-11 62 views
2

首先,我沒有使用jQuery-UI,只有最新的jQuery!如何使用jquery.serialize()序列化ul中的所有li#id?

我有以下列表:

<ul id="audio_list"> 
    <li id="trackid_1"></li> 
    <li id="trackid_5"></li> 
    <li id="trackid_2"></li> 
    <li id="trackid_4"></li> 
    <li id="trackid_3"></li> 
</ul> 

現在,我想序列化這個列表,並將其保存爲一個變量數組,如:

var myaudiotracks = jQuery('#audio_list').serialize(); 

我得到的是一個空字符串,當然,因爲我錯過了某些東西,或者僅用jQuery無法序列化列表。

我試圖做到的是張貼在變量應該是這個變量的形式發送陣列PHP腳本,結果如​​下:

trackid[] 1 
trackid[] 5 
trackid[] 2 
trackid[] 4 
trackid[] 3 

任何想法如何,我可以得到這個結果?

+1

根據我所知,.serialize()適用於具有名稱 - 值對的表單元素。但不確定這一點。 –

回答

3

嘗試

var array = jQuery('#audio_list li').map(function(){ 
    return 'trackid[]=' + this.id.match(/(\d+)$/)[1] 
}).get() 
console.log(array.join('&')) 

演示:Fiddle

+0

我將此答案標記爲正確答案,因爲它非常短,不使用每個循環函數,並且如果id名稱不同,它可以在需要時與其他標識符重複使用。大!謝謝! – lickmycode

1

serialize()將編碼一組表單元素作爲提交的字符串。

嘗試使用.each()和循環中的所有元素li裏面div

$(document).ready(function(){ 
    var myaudiotracks = new Array(); 
    jQuery('#audio_list li').each(function(){ 
     myaudiotracks.push($(this).attr("id").split("trackid_")[1]); 
    }); 
    console.log(myaudiotracks); 
}); 

DEMO FIDDLE

0

你不能使用jQuery序列化功能這樣的,它僅適用於表單元素,所以如果你想獲得這樣的結果,試試這個:

<ul id="audio_list"> 
    <li id="trackid_1"><input type="hidden" name="trackid" value="1"></li> 
    <li id="trackid_5"><input type="hidden" name="trackid" value="5"></li> 
    <li id="trackid_2"><input type="hidden" name="trackid" value="2"></li> 
    <li id="trackid_4"><input type="hidden" name="trackid" value="4"></li> 
    <li id="trackid_3"><input type="hidden" name="trackid" value="3"></li> 

var myaudiotracks = jQuery('#audio_list li').serialize(); 
+0

使用'name =「trackid」'只會給你最後一個項目。如果您打算使用此方法序列化數據,請使用'name =「trackid []」' – happymacarts

相關問題