jquery如何遍历属性值列表

时间:2012-04-11 08:40:54

标签: jquery jquery-selectors custom-data-attribute

我有这个方法:

$("#btnupdateofficeapprovers").click(function () {
        var checkedInvoiceLineIds = $(":checked").attr("data-invoicelineid");

        checkedInvoiceLineIds.each(function (index) {
            alert(index + ': ' + $(this).text());
        });
    });




<table>
        @foreach (var item in Model.Invoice.InvoiceLines) {
            <tr class="subheader">
                <td>
                    <input type="checkbox" class="invoicelinecombobox" data-invoicelineid=@item.InvoiceLineId >
                </td>
            </tr>

        }
    </table>

<div id="updateapproversdiv">
    @Html.DropDownListFor(modelItem => Model.Invoice.ApprovedForPaymentUserId, Model.OfficeApprovers, new { @class = "officeapproverddl" })
    <input type="button" id="btnupdateofficeapprovers" class="button invisibleforprint" value="Update" />
</div>

我要做的就是获取所有的invoicelineid并将它们放入一个集合中。

接下来,我想要浏览列表中的每个ID并在警报中显示它。

问题是这是一个很大的例外。谁知道如何解决?这该怎么做?

3 个答案:

答案 0 :(得分:1)

您只需使用jQuery选择器“Has attribute”:http://api.jquery.com/has-attribute-selector/

jsFiddle:http://jsfiddle.net/NF5Ss/1/

$("#btnupdateofficeapprovers").click(function () {
    var checkedInvoiceLineIds = $(":checked[data-invoicelineid]");

    console.log(checkedInvoiceLineIds);

    checkedInvoiceLineIds.each(function(index) {
       alert(index + ': ' + $(this).data('invoicelineid'));
    });
});​

答案 1 :(得分:0)

attr()返回一个字符串。您无法使用each()迭代字符串。这可能就是你要做的事情:

$("#btnupdateofficeapprovers").click(function () {
    var ids = $("input:checked").attr("data-invoicelineid").split(' ');
    $.each(ids, function(i, v) {
        alert(i + ': ' + v);
    });
});

编辑:您也可以建议 @Armatus

$("#btnupdateofficeapprovers").click(function () {
    var $els = $("input:checked");
    $els.each(function(i){
        alert(i + ': ' + $(this).attr('data-invoicelineid'));
    });
});

答案 2 :(得分:0)

.each遍历jquery对象。您使用.attr()分配checkedInvoiceLineIds,这是一个字符串,但没有.each

make it = $(':checked')然后在.each中访问其.attr。