2011-06-23 138 views
7

Hi Tôi có một bảng với danh sách các xejquery-Lấy id của div gần nhất?

<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> 

bảng đã có nhiều hàng Tôi muốn nhận được id của div nơi tên lớp là "display_image" cho mỗi hàng tôi đã cố gắng để có được nó như

$(".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) 

Đây là công trình phục vụ hàng đầu tiên nhưng đối với hàng thứ hai nó cũng trả về id của div của hàng đầu tiên chỉ là những gì thay đổi tôi nên làm để tôi sẽ nhận được id của div trên mỗi hàng

+0

thử một cái gì đó giống như $ ('tr div.display_image'). Each (function() {$ (this) .attr ('id')})? – max4ever

Trả lời

15

Đi lên cho đến khi bạn tìm ra liên tiếp, và sau đó xuống một lần nữa để tìm hình ảnh hiển thị:

$(".isActive").click(function() { 
    var div_id = $(this).closest('tr').find('.display_image').attr(id); 
    // ... 
}); 

Lưu ý rằng điều này không phụ thuộc vào ID yếu tố gốc của mình ở tất cả - chỉ cách bố trí của các yếu tố của bạn trong vòng DOM.

Các giải pháp tối ưu khác là có thể, nhưng giải pháp này sẽ hoạt động bất kể vị trí tương đối của các yếu tố .isActive.display_image trong mỗi hàng.

0

closet sẽ không hoạt động ở đây..như tôi biết tủ quần áo hoạt động theo hướng người thừa kế của cha mẹ.

thử này một

var div_id =$('#'+checkBox_id).parents(".check_box_div").find(".display_image").attr("id"); 
0

Hãy thử điều này.

$(".isActive").click(function() { 
var div_id = $(this).parents(".check_box_list").next(".display_image").attr("id"); 
} 

Tôi đã sử dụng cha mẹ chứ không phải cha mẹ chỉ trong trường hợp bạn thay đổi bất kỳ đánh dấu nào xung quanh mình.

0

Sử dụng

$(".isActive").click(function() { 
    var $row = $(this).closest("tr"); 
    var $div_id = $row.find("div.display_image").attr("id"); 
}); 

jsFiddle: http://jsfiddle.net/5TV9A/8/

+0

Ah, Alnitak đánh tôi với nó. –

+0

yup - trả lời trước, fiddle sau ... ;-) – Alnitak

0

Bạn có thể lưu trữ tất cả các thông tin trong một mảng và xử lý chúng sau khi vòng lặp.

$(".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) 

Hy vọng nó giúp

Các vấn đề liên quan