3

首先,我没有使用 jQuery-UI,只有最新的 jQuery!

我有以下列表:

<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

有什么想法可以得到这个结果吗?

4

3 回答 3

5

尝试

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

演示:小提琴

于 2013-09-11T02:52:30.797 回答
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

于 2013-09-11T02:51:44.287 回答
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();
于 2013-09-11T02:53:48.800 回答