嗨,我有一张包含车辆清单的表
<table>
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}" id ="rows">
<td>
<div class="check_box_div">
<div class="check_box_list">
<g:checkBox id = "isActive_${i}" class="isActive" name="isActive" value="${vehicleInstance?.isActive}" />
<input type="hidden" value="${vehicleInstance?.id}" class="vehicleId" name="vehicleId" id="isActive_${i}_" />
</div>
<div class="display_image" id ="display_image_${i}"></div>
</div>
</td>
</tr>
表有很多行 我想得到div的id,其中每个类的名称为“ display_image ”,我试图让它像
$(".isActive").click(function() {
var checkBox_id = $(this).attr("id");
var checkbox = $('#'+checkBox_id);
var div_id =$('#'+checkBox_id).closest("div").find(".display_image").attr("id"); // always returns div_id =display_image_0(div id of first row)
这适用于第一行但第二行也只返回第一行div的id 我应该做出什么改变,以便我在每一行得到div的id
答案 0 :(得分:16)
向上直到找到该行,然后再向下找到显示图像:
$(".isActive").click(function() {
var div_id = $(this).closest('tr').find('.display_image').attr(id);
// ...
});
请注意,这完全不依赖于原始元素的ID - 只是DOM中元素的布局。
可以使用更多最佳解决方案,但无论每行中.isActive
和.display_image
元素的相对位置如何,此解决方案都可以使用。
答案 1 :(得分:1)
试试这个。
$(".isActive").click(function() {
var div_id = $(this).parents(".check_box_list").next(".display_image").attr("id");
}
我使用父母而不是父母,以防你转移任何标记。
答案 2 :(得分:0)
closet
在这里不起作用..因为我知道壁橱对父母heirarachy有效。
尝试这个
var div_id =$('#'+checkBox_id).parents(".check_box_div").find(".display_image").attr("id");
答案 3 :(得分:0)
使用
$(".isActive").click(function() {
var $row = $(this).closest("tr");
var $div_id = $row.find("div.display_image").attr("id");
});
jsFiddle:http://jsfiddle.net/5TV9A/8/
答案 4 :(得分:0)
您可以将所有信息存储在数组中并在循环后处理它们。
$(".isActive").click(function() {
var checkBox_id = $(this).attr("id");
var checkbox = $('#'+checkBox_id);
var div_array = new Array();
$('.display_image').each(function(index) {
var div_array[index] = //whatever you want;
});
// Now in div_array you have stored all the information you want (the id as well)
希望有所帮助