获取所有子div jquery的id

时间:2013-08-16 14:35:45

标签: jquery ajax

Html代码

<div class="dd" id="nestable">
            <ol class="dd-list">
                <li class="dd-item" data-id="1">
                    <div class="dd-handle" id="1">Item 1</div>
                </li>
                <li class="dd-item" data-id="11">
                    <div class="dd-handle" id="11">Item 11</div>
                </li>
                <li class="dd-item" data-id="12">
                    <div class="dd-handle" id="12">Item 12</div>
                </li>
            </ol>
 </div>

我想通过ajax传递所有child div IDS,例如1,11,12

这是我的代码。

$('#nestable').nestable({
        group: 1
    })
    .on('change', updateOutput,function(event){
     var a=$("#nestable :first-child").attr('id');
     $.ajax({
     url: 'drag',
     data: {sorted_list: $(this).text()},
     datatype: 'json',
    });
    });

我应该在div(#nestable)下传递所有子div(1,11,12)。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:1)

试试这个:

$('#nestable').nestable({
    group: 1
})
.on('change', updateOutput,function(event){
    var childIds = $('.dd-list div', this).map(function() {
        return this.id;
    });

    $.ajax({
        url: 'drag',
        data: { sorted_list: childIds },
        datatype: 'json'
    });
});

答案 1 :(得分:0)

您可以这样做:

var ids = [];
var $childDivs = $(".dd div.dd-handle");

$($childDivs).each(function(){
    ids.push($(this).attr("id"));
});

alert(JSON.stringify(ids))

FIDDLE

拿你的样本:

$('#nestable')
    .nestable({ group: 1 })
    .on('change', updateOutput, function(event){
         var a=$("#nestable :first-child").attr('id');
         $.ajax({
             url: 'drag',
             data: {
                 sorted_list: $(this).text(),
                 ids: function(){
                     var ids = [];
                     var $childDivs = $(".dd div.dd-handle");

                     $($childDivs).each(function(){
                         ids.push($(this).attr("id"));
                     });
                     return ids;
                 }
             },
             datatype: 'json',
        });
    });

或者:

$('#nestable')
        .nestable({ group: 1 })
        .on('change', updateOutput, function(event){
             var a=$("#nestable :first-child").attr('id');
             $.ajax({
                 url: 'drag',
                 data: {
                     sorted_list: $(this).text(),
                     ids: $(".dd div.dd-handle").map(function(x, y) {
                               return y.id;
                          }).toArray()
                 },
                 datatype: 'json',
            });
        });

答案 2 :(得分:0)

试试这个:

var childids = $('#nestable .dd-handle').map(function(x, y) {
    return y.id;
}).toArray().join(',');

// childids is "1,11,12" 

<强> Demo