2013-11-26 3 views
1

Как пытаться запустить jsfiddle, я решил, что это должно работать, но вместо этого оно возвращает пробелы.Почему это не возвращает никаких элементов?

Это пример HTML

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

И я просто пытаюсь запустить этот код против него.

var x = $("#test").children("tr"); 
console.log(x); 

Но вместо этого он возвращает ничего не по х, а не по всем элементам tr.

Любые идеи?

Моя конечная цель - создать функцию, которая будет выполнять итерацию через каждый tr и td в выбранной таблице с помощью jquery, позволяя мне «устанавливать» значения div в них для онлайн-настольной игры. Это лучший способ?

ответ

5

Проблема заключается в том, что

$("#test").children("tr"); 

эквивалентно

$("#test > tr"); 

, но большинство браузеров вставить sorrounding tbody если его нет в таблице, поэтому #test > tr не соответствует ни одному элементу, поэтому лучше использовать

$("#test tr"); 

или, если вы предпочитаете

$("#test").find("tr"); 
+0

У вас есть тип. Вам нужно добавить '#' в предпочтительный элемент. –

+0

Вы правы, теперь исправлено, спасибо! –

+0

Большое спасибо. –

1

использовать это:

var x = $("#test").find("tr"); 
console.log(x); 
+3

Это не объясняет, почему '$ ("#test"). Дети ("tr") 'не работает. –

1

Вы можете попробовать использовать .each() Fiddle

$("#test td").each(function() { 
    var x = $(this).text(); 
    console.log(x); 
}); 
Смежные вопросы