/ / jquery mówi tbody.length = 1, nawet jeśli nie ma tagu <tbody> [duplicate] - jquery, html

jquery mówi tbody.length = 1, nawet jeśli nie ma znacznika <tbody> [duplicate] - jquery, html

Mam bardzo prostą tabelę z minimum znaczników html, np .:

<table id="test">
<tr><td>some table cell</td></tr>
</table>

Próbuję sprawdzić, czy tag jest obecny. dziwną rzeczą jest to, że jquery mówi „tak, jest tag tbody”, chociaż go nie zdefiniowałem! co tu się dzieje?

$("table#test").each(function(){

var tbody = $(this).find("tbody");

//how can there be a tbody when there is no <tbody> tag defined?
console.log(tbody.length); //gives 1, should be 0 though as there is no tbody

});

przetestowane w Chrome 28.0, Firefox 22.0 przy użyciu jQuery 1.6.4 (jak wymaga tego obecny projekt, ale dzieje się tak również w jQuery 2.0.2)

tutaj jest także jsFiddle: http://jsfiddle.net/nerdess/rH5Lf/

Odpowiedzi:

7 dla odpowiedzi № 1

tbody dodaje automatycznie w tabeli, widać, że jest tam tbody, klikając prawym przyciskiem myszy i wyświetlając komponent (narzędzia programistyczne dla chromu)

<table id="test">
<tbody>
<tr>
<td>some table cell</td>
</tr>
</tbody>
</table>

3 dla odpowiedzi № 2

The tbody element jest wymagany, aby dokument był ważny,dlatego większość przeglądarek doda ją, jeśli jej brakuje. Jeśli przejrzysz dokument za pomocą Firebug lub narzędzi dev dev, zobaczysz go w renderowanym źródle.

Jeśli możesz edytować swoje pytanie z większą szczegółowością tego, co próbujesz osiągnąć, możemy zasugerować alternatywne metody.


1 dla odpowiedzi nr 3

The tbody elementy identyfikują zakres grup wierszy. Jeśli w tabeli nie ma elementu tbody, to zbiór tr elementy traktowane jako pojedyncza grupa i tak opakowane pod singiel tbody element w reprezentacji elementu Dom jquery. Dlatego widzisz tbody liczyć jako 1.


1 dla odpowiedzi nr 4

Standard mówi:

TABELA nie może zawierać TRbezpośrednio, muszą być zawarte w THEAD, TFOOT lub TBODY. Jednak dla uproszczenia i wstecznej kompatybilności znacznik początkowy TBODY może zostać pominięty „gdy tabela zawiera tylko jeden obiekt tabeli i nie ma sekcji stołu lub stóp”; w takim przypadku element jest wywnioskowany przez przeglądarkę.

Sprawdź tutaj, zobaczysz, że tbody jest jakoś wymagane: http://www.w3.org/TR/html4/sgml/dtd.html

(CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>