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 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();

liこれにより、すべてのID が配列として取得されます。

于 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 に答える