2011-01-18 7 views
7

Tengo la siguiente estructura HTML y quería saber la longitud de <td>s inmediata. aquí está el código que estoy utilizando: -Encontrar el recuento de <td> Jquery

<table class="PrintTable"> 
    <tr> 
     **<td>** 
     <table> 
      <thead> 
       <tr><th>Type Of Transaction</th></tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>Name</td> 
       </tr> 
       <tr> 
        <td>Age</td> 
       </tr> 
      </tbody> 
     </table> 
     </td> 
     **<td>** 
     <table> 
      <thead> 
       <tr><th>2006</th></tr> 
      </thead> 
      <tbody> 
       <tr> 
        <td>Andi</td> 
       </tr> 
       <tr> 
        <td>25</td> 
       </tr> 
      </tbody> 
     </table> 
     </td> 

    </tr> 
</table> 

La función que estoy usando para averiguar la longitud de TD es

function getBody(element) 
{ 
    var divider=2; 
    var originalTable=element.clone(); 
    var tds = $(originalTable).children('tr').children('td').length; 
    alert(tds); 


} 

El resultado que estoy viendo es 0. Ninguna pista en absoluto . Estoy esperando 2. Cualquier ayuda será apreciada.

+0

¿Por qué está utilizando '.clone()'? ¿Y el 'elemento' está destinado a ser un objeto jQuery? Supongo que sí, ya que 'clon' no es un método JS nativo en un objeto DOM. ¿Puedes dar un ejemplo de cómo estás invocando 'getBody'? –

+0

Sí, el elemento es un Objeto JQuery y contiene la tabla completa como objeto. Incluso si no invocas clone(), aún muestra 0 donde estoy esperando 2. – Nrusingha

Respuesta

19

Quité los asteriscos de su HTML e hice algunas suposiciones acerca de cómo está invocando getBody, por lo que si hice algo que no estaba bien, hágamelo saber.

Código: http://jsfiddle.net/27ygP/

function getBody(element) { 
    var divider = 2; 
    var originalTable = element.clone(); 
    var tds = $(originalTable).children('tbody').children('tr').children('td').length; 
    alert(tds); 
} 

getBody($('table.PrintTable')); 

El gran cambio fue el añadir un .children('tbody'). El intérprete de HTML ajusta el tr en tbody. Avanza hacia eso y estarás bien.

+0

Muchas gracias. Funciona. ¿Hay un buen depurador donde podamos descubrir todos estos trucos? – Nrusingha

+2

[Firebug] (http://getfirebug.com/) para Firefox es la mejor herramienta en el mercado para navegar el DOM. Todos los principales navegadores tienen herramientas integradas para hacer lo mismo (simplemente haga clic en los menús). Te llevará, entre otras cosas, a un árbol interactivo que puedes recorrer manualmente. –

+0

Gracias! Me pregunto por qué no puedes usar selectores múltiples con .children() –

2

Creo que desea utilizar lo siguiente.

$("td").length 

ACTUALIZACIÓN

Usted tendrá que utilizar la etiqueta tr como el selector de inicio y luego contar cada selector td usando primero en tomar sólo la primera.

$("tr", $("td:first")).length 
+0

Sí, pero no para los anidados, pero solo para ** **. – Nrusingha

1

Esto debería funcionar:

var itemsCount = $(".PrintTable > tr > td").length; 

Actualización:

me he dado cuenta de que al menos cromo inserta <tbody> si no está ya presente, así que para obtener el apoyo del navegador cruz:

var itemsCount = $(".PrintTable > tbody > tr > td, .PrintTable > tr > td").length; 

Ejemplo: http://jsfiddle.net/H2JWS/

+0

No. Viendo 0 como resultado. – Nrusingha

3

Prueba esto:

//For FFox 
$(document).ready(function(){ 
var countTD=$("Your_Table_ID_or_Class tr:first > td").length; 
}); 

// For webKit Browser 
$(window).load(function(){ 
var countTD=$("Your_Table_ID_or_Class tr:first > td").length; 
}); 

Nota; Si la creación de la columna fila de la tabla dinámica a continuación, utilizar $(document).live("click",function(){});

1

En general, si se desea contar el número de td 's en una fila específica, puede hacer esto ..

$(function(){ 
    count = $("table tr").children("td").index()+1; 
}); 
1

var = rowCount $ ('# myTable tr'). length;

0
var originalTable = $(remove_copy_drargelement).closest('table').clone(); 

var tds = $(originalTable).children('tbody').children('tr').children('td').length; 
Cuestiones relacionadas