2011-06-23 24 views
7

Hola tengo una tabla con la lista de vehículosjquery-Obtener el id del div más cercano?

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

tabla tiene muchas filas Quiero conseguir el id del div donde el nombre de la clase es "display_image" para cada fila i trató de conseguirlo como

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

se trata de obras para la primera fila, pero para la segunda fila también se vuelve id del div de la primera fila única cuál es el cambio que yo debería hacer lo que voy a obtener el id del div en cada fila

+0

hemos probado algo así como $ ('tr div.display_image'). Each (function() {$ (this) .attr ('id')})? – max4ever

Respuesta

15

Ir arriba hasta encontrar la fila, y luego hacia abajo otra vez para encontrar la imagen de la pantalla:

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

Tenga en cuenta que esta no depende de la identificación de su elemento original a todo - sólo la disposición de sus elementos dentro de el DOM.

Son posibles más soluciones óptimas, pero esta funcionará independientemente de las posiciones relativas de los elementos .isActive y .display_image dentro de cada fila.

0

closet no funcionará aquí ... por mucho que sepa que el armario funciona para la heiraraquía de los padres.

prueba este

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

probar esto.

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

Utilicé a los padres en lugar de a los padres solo en caso de que cambie su marca.

0

Uso

$(".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 me ganó. –

+0

yup - responde primero, violín después ... ;-) – Alnitak

0

Usted puede almacenar toda la información en una matriz y manejarlos después del bucle.

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

creo que sirve

Cuestiones relacionadas