jQuery - 获取复选框内的下一个元素
jQuery - get next element inside checkbox each
我有一个 table 包含以下列:复选框、文本、文本...
对于每个选中的复选框,我需要获取第二个文本值并测试是否包含某个值。
到目前为止我的代码
$('input:checkbox').each(function () {
var current = $(this);
if (current.is(':checked')) {
var txt = current.next('.inf-name').text();
if (txt.contains(inf) { ... }
}
});
剃须刀代码:
<table class="table table-bordered table-modified">
<thead>
<tr>
<th></th>
<th>State</th>
<th>Lookup Type</th>
<th>Plates</th>
<th>Notices</th>
</tr>
</thead>
<tbody>
@Html.HiddenFor(p => p.OrgUnitID, new { @Value = orgUnitId })
@for(var ind = 0; ind < records.Count(); ++ind)
{
var r = records[ind];
var i = ind;
@Html.HiddenFor(p => p.Comp[i].State, new { @Value = @r.State })
<tr>
<td>@Html.CheckBoxFor(p => p.Comp[i].Checked)</td>
<td>@r.State</td>
@if (dict.ContainsKey(r.State))
{ <td class="inf-name">@dict[r.State].ToString()</td> }
else
{ <td class="inf-name"></td> }
<td>@Html.ActionLink(@r.Plates.ToString(CultureInfo.InvariantCulture), "Plates", new { controller = "Lookup", state = @r.State})</td>
<td>@Html.ActionLink(@r.Notices.ToString(CultureInfo.InvariantCulture), "Plates", new { controller = "Lookup" }, new { state = @r.State })</td>
</tr>
}
</tbody>
</table>
其中 inf-name 是第二个元素上的 class。我无法完成它。有人知道解决方案吗?
使用 next()
将获取直接兄弟,您需要获取复选框的父级,该复选框是 <td>
使用 nextAll().eq(1)
查找下一个兄弟,获取其中的文本那个兄弟姐妹使用 .text()
编辑:
如果您希望您的目标使用 类(前提是 类 以后永远不会更改),那么只需将您的代码更改为:
$('input:checkbox').each(function () {
var current = $(this);
if (current.is(':checked')) {
var txt = current.next('.inf-name').eq(1).text();
if (txt.contains(inf) { ... }
}
});
var currentRows = $('.table tbody tr');
$.each(currentRows, function () {
$(this).find(':checkbox').each(function () {
if ($(this).is(':checked')) {
console.log($(currentRows).eq(1).val());
}
});
});
我有一个 table 包含以下列:复选框、文本、文本... 对于每个选中的复选框,我需要获取第二个文本值并测试是否包含某个值。
到目前为止我的代码
$('input:checkbox').each(function () {
var current = $(this);
if (current.is(':checked')) {
var txt = current.next('.inf-name').text();
if (txt.contains(inf) { ... }
}
});
剃须刀代码:
<table class="table table-bordered table-modified">
<thead>
<tr>
<th></th>
<th>State</th>
<th>Lookup Type</th>
<th>Plates</th>
<th>Notices</th>
</tr>
</thead>
<tbody>
@Html.HiddenFor(p => p.OrgUnitID, new { @Value = orgUnitId })
@for(var ind = 0; ind < records.Count(); ++ind)
{
var r = records[ind];
var i = ind;
@Html.HiddenFor(p => p.Comp[i].State, new { @Value = @r.State })
<tr>
<td>@Html.CheckBoxFor(p => p.Comp[i].Checked)</td>
<td>@r.State</td>
@if (dict.ContainsKey(r.State))
{ <td class="inf-name">@dict[r.State].ToString()</td> }
else
{ <td class="inf-name"></td> }
<td>@Html.ActionLink(@r.Plates.ToString(CultureInfo.InvariantCulture), "Plates", new { controller = "Lookup", state = @r.State})</td>
<td>@Html.ActionLink(@r.Notices.ToString(CultureInfo.InvariantCulture), "Plates", new { controller = "Lookup" }, new { state = @r.State })</td>
</tr>
}
</tbody>
</table>
其中 inf-name 是第二个元素上的 class。我无法完成它。有人知道解决方案吗?
使用 next()
将获取直接兄弟,您需要获取复选框的父级,该复选框是 <td>
使用 nextAll().eq(1)
查找下一个兄弟,获取其中的文本那个兄弟姐妹使用 .text()
编辑:
如果您希望您的目标使用 类(前提是 类 以后永远不会更改),那么只需将您的代码更改为:
$('input:checkbox').each(function () {
var current = $(this);
if (current.is(':checked')) {
var txt = current.next('.inf-name').eq(1).text();
if (txt.contains(inf) { ... }
}
});
var currentRows = $('.table tbody tr');
$.each(currentRows, function () {
$(this).find(':checkbox').each(function () {
if ($(this).is(':checked')) {
console.log($(currentRows).eq(1).val());
}
});
});