2010-07-06 12 views
13

Estoy tratando de implementar una función en la tabla de datos de jQuery, que devuelve la primera y la cuarta columna de una fila pulsadajQuery DataTable Móvil desde una fila, haga clic en

Estoy siguiendo este ejemplo, lo que me permite manipular un hecho clic fila http://datatables.net/examples/api/select_single_row.html

pensar que yo pueda cambiar este controlador para realizar los procedimientos de valor célula de lectura y utilizar el valor en mi propia lógica

/* Add a click handler to the rows - this could be used as a callback */ 
$("#example tbody").click(function(event) { 
    $(oTable.fnSettings().aoData).each(function(){ 
     $(this.nTr).removeClass('row_selected'); 
    }); 
    $(event.target.parentNode).addClass('row_selected'); 
}); 

también he llegado de nuevo con este pequeño segmento de código fr om foro dataTable http://datatables.net/forums/comments.php?DiscussionID=1384&page=1#Item_0

$('#example tbody tr').click(function() { 
    // Alert the contents of an element in a SPAN in the first TD 
    alert($('td:eq(0) span', this).html()); 
}); 

puedo tener ningún puntero de modo que pueda obtener la primera y la cuarta columna del campo hecho clic?

siguiente parte tengo resuelto lo anterior, gracias nick

sin embargo tengo la siguiente parte del problema. cuando init la tabla yo uso

/* Init the table */ 
    oTable = $('#filetable').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": "/crvWeb/jsonFileList.do", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
      $.ajax({ 
       "dataType": 'json', 
       "type": "POST", 
       "url": sSource, 
       "data": aoData, 
       "success": fnCallback 
      }); 
     } 
    }); 

mi servlet toma un parámetro de petición dir y devuelve una lista a la tabla de datos como respuesta JSON.

/crvWeb/jsonFileList.do 

¿cómo puedo agregar y obtener la respuesta de serlvet con la solicitud posterior para que pueda tener mi tabla actualizada?

Respuesta

25

Puede utilizar .delegate() más fácil aquí, así:

$("#example tbody").delegate("tr", "click", function() { 
    var firstCellText = $("td:first", this).text(); 
    var fourthCellText = $("td:eq(3)", this).text(); 
}); 

You can try out a demo here

Con .delegate()this se refiere a la <tr> ya que se trata del clic que estamos manejando, haciendo las cosas bastante un poco más limpia .. y sigue siendo solo un manejador de eventos en el nivel <tbody>, no uno por <tr>.

+0

una pregunta de seguimiento más. si quisiera pasar el valor a la grilla para actualizarlo, ¿cómo debería hacerlo para usar la función de publicación para actualizar la tabla sobre la marcha? – nokheat

+0

@nokheat - ¿Qué quieres decir? Si puede describir un poco más acerca de dónde provienen y dónde van los valores, podría ayudar ... Tengo que dormir por la noche, pero responda aquí y lo verificaré en la mañana :) –

+0

Necesito mostrar algún segmento de código así que por favor refiérase a mi nueva edición – nokheat

0

Esto debe hacer el truco, si estoy leyendo el código correctamente:

$("tr.row_selected td:nth-child(1), tr.row_selected td:nth-child(4)"); 

debería devolver el primer y cuarto hijo de todos los elementos TR con la clase row_selected.

+0

estoy comprobando mi código y su solución, sin embargo, todavía estoy tratando de evitarlo. el convern principal es, ¿realmente puedo tomar una referencia de la entrada del controlador? como $ ("# example tbody"), y usa este identificador para obtener la referencia de la celda y, por lo tanto, su valor. – nokheat

Cuestiones relacionadas