使用jQuery循环对我来说不起作用
我有如下表数据,每行都有不同值的数据属性。我想使用jQuery收集这些值。我已经在jQuery中编写了逻辑,但是循环对我来说不起作用使用jQuery循环对我来说不起作用,jquery,html,Jquery,Html,我有如下表数据,每行都有不同值的数据属性。我想使用jQuery收集这些值。我已经在jQuery中编写了逻辑,但是循环对我来说不起作用 <table id="tblAdAttribute"> <thead> <tr> </tr> </thead> <tbody> @if (Model != null) { foreach (var item in Model)
<table id="tblAdAttribute">
<thead>
<tr> </tr>
</thead>
<tbody>
@if (Model != null)
{
foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.Title)</td>
<td>
<a href="#"><input type="checkbox"
name="chkSelected"
data-values="'@item.Title', @((int)item.DataType))"></a>
</td>
</tr>
}
}
</tbody>
</table>
当我发出警报时,它总是给出第一行值,而不循环其余的行。您总是得到相同的值,因为您在循环的每个迭代中选择相同的东西。您不需要使用
最近的
或同级
来遍历DOM,因为所需的数据
属性直接位于复选框本身上。试试这个:
var getSelectedAttributes = function() {
var values = $("input[name='chkSelected']:checked").map(function() {
return $(this).data('values');
}).get();
alert(values);
// do something with the values array here...
}
这里我使用map()
创建一个数据属性数组。为什么不使用:
$("input[name='chkSelected']:checked").each(function () {
singlevalue = $(this).data("values");
values.push(singlevalue);
alert(singlevalue);
}).promise().done(function(){
SelectedAttributes = values.join(", ");
});
只是好奇:你为什么在锚内使用复选框?请拉小提琴。!谢谢。仍然得到相同的值:(但在FireBug中,我可以看到复选框数据属性中添加了正确的值。我怀疑它与html代码的问题。你能从技术上解释一下promise()的用法吗?最初它似乎返回空的“值”,然后循环一次就填充了“值”?引导mepromise()与done()一起使用)方法只允许在所有以前的回调(定义为异步的)(本例中为每个())都已执行时调用回调。这是一个不同的方法,我们也可以使用when()。
$("input[name='chkSelected']:checked").each(function () {
singlevalue = $(this).data("values");
values.push(singlevalue);
alert(singlevalue);
}).promise().done(function(){
SelectedAttributes = values.join(", ");
});