DOM遍历麻烦

时间:2014-03-04 10:57:17

标签: javascript jquery dom-traversal jquery-traversing

我有桌子:

<table class="table table-striped" id="dane">
<tr>
    <th>
        Rezerwuj           
    </th>
    <th>
        Name
    </th>
    <th>
        Manufacturer
    </th>
    <th>
        ProjectName
    </th>
    <th>
        Name
    </th>
    <th>
        Name
    </th>
    <th>
        Surname
    </th>
    <th>
        Issue
    </th>
    <th>
        IssueDetails
    </th>
    <th></th>
</tr>

    <tr>
        <td style="vertical-align:middle">
            <div class="value">
                <input data-val="true" data-val-number="The field DeviceInstanceId must be a number." data-val-required="The DeviceInstanceId field is required." id="item_DeviceInstanceId" name="item.DeviceInstanceId" type="hidden" value="1" />

            </div>
        </td>
        <td style="vertical-align:middle">
            a
        </td>
        <td style="vertical-align:middle">
            b
        </td>
        <td style="vertical-align:middle">
            c
        </td>
        <td style="vertical-align:middle">
            d
        </td>
        <td style="vertical-align:middle">
            e
        </td>
        <td style="vertical-align:middle">
            f
        </td>
        <td style="vertical-align:middle">
            <input checked="checked" class="check-box" disabled="disabled" type="checkbox" />
        </td>
        <td style="vertical-align:middle">
            Uszkodzona wtyczka ethernet
        </td>

    </tr>
    <tr>
        <td style="vertical-align:middle">
            <div class="value">
                    <input type="checkbox" />
                <input id="item_DeviceInstanceId" name="item.DeviceInstanceId" type="hidden" value="2" />

            </div>
        </td>
        <td style="vertical-align:middle">
            a   
        </td>
        <td style="vertical-align:middle">
            b
        </td>
        <td style="vertical-align:middle">
            c
        </td>
        <td style="vertical-align:middle">
            d
        </td>
        <td style="vertical-align:middle">
            e
        </td>
        <td style="vertical-align:middle">
            f
        </td>
        <td style="vertical-align:middle">
            <input class="check-box" disabled="disabled" type="checkbox" />
        </td>
        <td style="vertical-align:middle">

        </td>

    </tr>
    <tr>
        <td style="vertical-align:middle">
            <div class="value">
                    <input type="checkbox" />
                <input id="item_DeviceInstanceId" name="item.DeviceInstanceId" type="hidden" value="3" />

            </div>
        </td>
        <td style="vertical-align:middle">
            a
        </td>
        <td style="vertical-align:middle">
            b
        </td>
        <td style="vertical-align:middle">
            c
        </td>
        <td style="vertical-align:middle">
            d
        </td>
        <td style="vertical-align:middle">
            e
        </td>
        <td style="vertical-align:middle">
            f
        </td>
        <td style="vertical-align:middle">
            <input class="check-box" disabled="disabled" type="checkbox" />
        </td>
        <td style="vertical-align:middle">

        </td>

    </tr>


</table>
<button class="btn btn-default" id="MakeReservation">Rezerwuj</button>

和jQuery代码:

$("#MakeReservation").click(function () {
    var Ids = new Array();
    $("input:checked").each(function () {
        Ids.push($.trim($(this).parentsUntil(".value").find("input").attr('value')));
    });
    console.log(Ids);
});                     

如果选中<div>中的复选框,我想读取隐藏输入的value属性。 但是此时如果没有选中复选框,则JS返回第一个输入的值。 如果选中复选框,则代码将返回first的值,并且对于选中的复选框附近的输入为空。

Here my JSFIDDLE有人可以建议我如何修改我的jQuery代码吗?

1 个答案:

答案 0 :(得分:1)

隐藏的输入字段是复选框的下一个兄弟,因此您可以使用

$("#MakeReservation").click(function () {
    var Ids =$("input:checked").map(function () {
        return $(this).next().val()
    }).get();
    console.log(Ids);
});

演示:Fiddle