我正在尝试使用JQuery迭代表的项目,同时我需要检查是否选中了复选框。我使用以下代码:
$("input:checkbox:checked").each(function() {
var name = $(".name").html();
var city = $(".city").html();
alert(name + " " + city);
});
输入所在的tr
的html结构:
<tr>
<td><input type="checkbox" name="prove" class="prove"></td>
<td class="name">Peter</td>
<td class="city">New York</td>
</tr>
<tr>
<td><input type="checkbox" name="prove" class="prove"></td>
<td class="name">Andrew</td>
<td class="city">Madrid</td>
</tr>
但我总是得到输出的第一个元素(当选中两个复选框时):
Peter New York
Peter New York
如何让我的功能转到下一个tr
,而不是始终显示第一个的数据?
提前致谢!
答案 0 :(得分:1)
由于您使用.html()
类选择器,它将始终从匹配元素的第一个元素中检索HTML内容。
您需要在this
的当前元素上下文中进行迭代,使用.closest()
遍历tr
元素,然后使用.find()
定位所需的td
的。
$("input:checkbox:checked").each(function() {
var tr = $(this).closest('tr');
var name = tr.find(".name").html();
var city = tr.find(".city").html();
alert(name + " " + city);
});
答案 1 :(得分:1)
$('button').click(function() {
var obj = $(".prove:checked").map(function() {
var tr = $(this).closest('tr');
var name = tr.find('td.name').text();
var city = tr.find('td.city').text();
return name + ' ' + city;
}).get();
console.log(obj);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><input type="checkbox" name="prove" class="prove"></td>
<td class="name">Peter</td>
<td class="city">New York</td>
</tr>
<tr>
<td><input type="checkbox" name="prove" class="prove"></td>
<td class="name">Andrew</td>
<td class="city">Madrid</td>
</tr>
</table>
<button>click</button>
答案 2 :(得分:0)
尝试使用jquery中的.siblings()
和$(this)
来获取jquery中的当前对象
$("input:checkbox:checked").each(function() {
var name = $(this).parent().siblings('.name').text();
var city = $(this).parent().siblings('.city').text();
alert(name + '' + city);
});
答案 3 :(得分:0)
或
$("input[type=checkbox]:checked").each(function() {
var tr = $(this).parent();
var name = tr.find(".name").html();
var city = tr.find(".city").html();
alert(name + " " + city);
});