Как мне использовать jQuery .each (), чтобы найти детей ребенка? - PullRequest
6 голосов
/ 31 октября 2011

Учитывая много тегов TABLE на странице, как выбрать дочерний элемент TD для выбранной таблицы.

Это логично, но не с этой ошибкой:

Error: uncaught exception: Syntax error, unrecognized expression: [object Object]tr

Мой код

$(document).ready(function () {
    var selectedTable = $('table').eq('9');

    $(selectedTable).css('border','10px solid green');

    $(selectedTable + 'tr td').each(function(i) {
        $(this).css('border','10px solid blue');
    });

});

Ответы [ 4 ]

24 голосов
/ 31 октября 2011
$(selectedTable).find('td').each(function (index, element) {
    ...
});
6 голосов
/ 31 октября 2011

selectedTable - это объект jQuery, а не строка.
Вы не можете использовать его в селекторе.

Вместо этого вам необходимо использовать API обхода jQuery:

selectedTable.find('tr td')
3 голосов
/ 31 октября 2011

Используйте .find(), чтобы получить детей из таблицы.Проблема в том, что selectedTable не строка селектора, а объект.Вы не можете объединить объект со строкой, поэтому вы получаете ошибку.

Это должно работать нормально:

$(document).ready(function () {
    var selectedTable = $('table').eq('9');

    $(selectedTable).css('border','10px solid green');

    $(selectedTable).find('tr td').each(function(i) {
        $(this).css('border','10px solid blue');
    });
});
3 голосов
/ 31 октября 2011
selectedTable.find('tr td').each(function(i) {
        $(this).css('border','10px solid blue');
    });

Вы также можете создать цепочку следующим образом:

selectedTable.css('border','10px solid green').find('tr td').each(function(i) {
  $(this).css('border','10px solid blue');
});

Кроме того, вам не нужно снова использовать $ (selectedTable), так как ваш селектор уже возвращает объект jquery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...