0

这是html代码:

<ul id="sortable">
    <li id="attachments[183]"></li>
    <li id="attachments[196]"></li>
    <li id="attachments[145]"></li>
    <li id="attachments[545]"></li>
</ul>

这是 JavaScript/jQuery 代码:

var query = {
    'action'  : 'save-attachment-order',
    'nonce'   : '8cb16e3927',
    'post_id' :  89,
}

我想获取 li ID 并使其成为这样的 var

var query = {
    'action'  : 'save-attachment-order',
    'nonce'   : '8cb16e3927',
    'post_id' :  89,
    'attachments[183]' : 2,
    'attachments[196]' : 3,
    'attachments[145]' : 1,
    'attachments[545]' : 4
}
4

5 回答 5

4

从这个对象开始:

var query = {
    'action'  : 'save-attachment-order',
    'nonce'   : '8cb16e3927',
    'post_id' :  89,
}

您可以使用以下命令将 id 添加为新属性:

$("#sortable li").each(function(){
    query[this.id] = 0; // not sure where you're getting the values from!
});

既然您解释了这些值应该代表顺序,您可能想要使用它来代替(假设 jQuery UI):

var order = $( "#sortable" ).sortable( "toArray" );
for(var i=0; i<order.length; i++) {
    query[order[i]] = i+1;
}

Alnitak 的答案也应该有效,因为列表项无论如何都会按顺序排列。

于 2013-03-08T12:46:32.530 回答
1
var ids = [];

$('li').each(function() {
  ids.push($(this).attr('id'));
});
于 2013-03-08T12:43:16.943 回答
1

这会将 ID 添加到query,其值是元素在列表中的相对位置:

$('#sortable > li').each(function(ix) {
    query[this.id] = ix + 1;
});

http://jsfiddle.net/alnitak/qddc5/

于 2013-03-08T12:53:12.473 回答
0
var ids = $("#sortable li").map(function(){
           return this.id;
          }).get();

这会将所有liid 作为数组获取..

于 2013-03-08T12:44:58.953 回答
0

试试这个

object.property = value;

所以你的代码变成

$('#sortable li').each(function() {
  query[$(this).attr('id')]= 'vaule u want';
});
于 2013-03-08T12:47:36.567 回答