这是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 query = {
'action' : 'save-attachment-order',
'nonce' : '8cb16e3927',
'post_id' : 89,
'attachments[183]' : 2,
'attachments[196]' : 3,
'attachments[145]' : 1,
'attachments[545]' : 4
}
答案 0 :(得分: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's answer也应该有用,因为列表项目无论如何都会按顺序排列。
答案 1 :(得分:1)
var ids = [];
$('li').each(function() {
ids.push($(this).attr('id'));
});
答案 2 :(得分:1)
这会将ID添加到query
,其值为元素在列表中的相对位置:
$('#sortable > li').each(function(ix) {
query[this.id] = ix + 1;
});
答案 3 :(得分:0)
var ids = $("#sortable li").map(function(){
return this.id;
}).get();
这会将所有li
ID作为数组获取..
答案 4 :(得分:0)
试试这个
object.property = value;
所以你的代码变成了
$('#sortable li').each(function() {
query[$(this).attr('id')]= 'vaule u want';
});