Я пытаюсь изучить любой возможный вариант кодирования, который я могу использовать для упрощения кода или большей гибкости при написании кода. Если у меня есть этот элемент гнезда ..

<table>
   <tr><td></td><td></td></tr>
   <tr><td></td><td></td></tr>
   <tr><td></td><td></td></tr>
   <tr><td></td><td></td></tr>
</table>

Если я хочу написать текст в первых столбцах, я могу сделать

$("table tr").each(function({
  // how to write text here on all first column using $(this)?
  // other ways to write on first column?
});

// другие способы записать весь первый столбец без использования ".each"

0
kratz 19 Сен 2009 в 15:54

2 ответа

Лучший ответ
$("table tr").each(function({
    $(this).find('td:first').text('Some text');
});
1
Dan Herd 19 Сен 2009 в 16:01
1
Не так хорошо, как добавление td: first к исходному селектору, но соответствует заявленной цели OP по использованию $ (this) внутри каждого. У меня было это (за исключением того, что я использовал html ()), написанное, когда я увидел ваш ответ.
 – 
tvanfosson
19 Сен 2009 в 16:05

Вы можете использовать селектор first:

$('table tr td:first').each(function(){
    $(this).text('1st column');
});

Или без использования каждого:

$('table tr td:first').text('1st column');

Надеюсь, я правильно понял ваш комментарий. Если вы по какой-то причине не хотите использовать его первым, вы можете проверить, есть ли prev () пусто внутри вашего вызова each ().

if ($(this).prev().length == 0){
    // $(this) references the first column
}
4
middus 19 Сен 2009 в 16:09
Я знаю, что это звучит неэффективно, но есть ли способ написать это, используя ".each" и $ (this)? Я пытаюсь увидеть возможности jquery.
 – 
kratz
19 Сен 2009 в 15:58
1
Вместо того, чтобы делать что-то, я бы предложил .each (function () {...}), если, конечно, у вас нет плагина doStuff .
 – 
tvanfosson
19 Сен 2009 в 16:03