如何使用jQuery从li标签获取ID?

时间:2013-03-08 12:40:02

标签: javascript jquery html

这是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
}

5 个答案:

答案 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;
});

请参阅http://jsfiddle.net/alnitak/qddc5/

答案 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';
});