JQuery, как перебрать список значений атрибутов
У меня есть этот метод:
$("#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 и положить их в коллекцию.
Далее я хочу просмотреть каждый идентификатор в списке и показать его в предупреждении.
Проблема в том, что это большое исключение. Кто-нибудь знает, как это исправить? Как это сделать?
3 ответа
Вы можете просто использовать селектор jQuery "Имеет атрибут": 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'));
});
});
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'));
});
});
Каждый перебирает объект jquery. Вы присваивает selectedInvoiceLineIds с помощью.attr(), которая является строкой и не имеет.each
Сделайте это =$(': флажок') и затем в.each доступ к его.attr.