Вопрос не в том, полагаться на то, что он создается автоматически или нет.
Вопрос в том, является ли он обязательным или нет.
Согласно проекту HTML5:
Начальный тег элемента tbody может быть опущен, если первым элементом внутри элемента tbody является элемент tr, и если этому элементу непосредственно не предшествует thead thebody или элемент tfoot, конечный тег которого был опущен.
Конечный тег элемента tbody может быть опущен, если за элементом tbody сразу следует элемент tbody или tfoot, или если в родительском элементе больше нет содержимого.
Таким образом, вы можете на самом делеопустите его, если ваш код удовлетворяет вышеуказанным условиям, в противном случае он необходим.
Как указали другие люди, даже если он необходим, и анализатор html не найдет его, потому что вы его не написали,он будет вставлен в DOM для вас, как указано в спецификации html5.
При этом, как правило, никогда не полагается на то, что кто-то создаст что-то автоматическое.для вас! (см. ниже)
Таким образом, даже если браузер создаст его для вас, это не означает, что новые браузеры или новая версия того же браузера будут следовать тем же путем, и вашитогда код может быть поврежден.
Кроме того, ваш JS может быть оптимизирован.
$( document ).ready( function(){
$( "td > input[id]" ).each( function( i, element ){
alert( element.id );
});
});
Всегда пишите точки с запятой в конце операторов. Не полагайтесь на движок JS, пишите их для вас !!! (см. Выше).
Нет необходимости вызывать функцию jQuery и создавать объект jQueryвне элемента просто вызвать метод attr()
, чтобы получить идентификатор.В JavaScript уже есть метод id()
для получения идентификатора.
Если ваша фактическая разметка похожа на ту, которую вы опубликовали в своем ответе, вы можете написать селектор jQuery следующим образом: table input[id]
.Или, если у вас есть вложенные таблицы td > input[id]
, как предложено в gilly3.