jquery найти текст внутри <td> - PullRequest
6 голосов
/ 02 ноября 2010

Я играю с некоторыми селекторами и ударился о стену с выделением текста внутри ячейки.

Вот простая попытка, которую я делаю.

<table>
 <tr>
     <td>First Name</td>
     <td>*required</td>
  </tr>
</table> 

Я хочу изменить класс для этой ячейки на «красный» - если найдена строка «* required».

Вот моя попытка jquery:

$("td:contains('*required')").addClass("red");

Кажется, все клетки применяют этот класс.Есть ли лучшие способы поиска конкретного текста?

Ответы [ 3 ]

23 голосов
/ 02 ноября 2010

То, что у вас есть, вы можете проверить здесь , имейте в виду, что любой родитель <td> также содержит этот текст, хотя, точное соответствие сделать это:

$("td").filter(function() { return $.text([this]) == '*required'; })
       .addClass("red");

Вы можете проверить это здесь .

5 голосов
/ 02 ноября 2010

Вы всегда можете просто использовать $.filter(), где только элементы, для которых обратный вызов возвращает true, включены в выборку.Например:

$('td').filter(function(i) {
    $(this).html().indexOf('*required') >= 0;
});

Также: вы хотите быть более точным с вашим селектором - для эффективности, а также из-за ответа Ника.Хотя, если вы рассматриваете эффективность, вам лучше не использовать метод, который в первую очередь использует обратный вызов.:)

Что касается селекторов, рассмотрите возможность использования $('#tableID > tr > td')... или чего-то подобного.

0 голосов
/ 02 ноября 2010

Вы не должны использовать JavaScript для этого.То, что вы должны использовать, это класс CSS:

<table>
 <tr>
     <td>First Name</td>
     <td class="required">*required</td>
  </tr>
</table> 


<style type="text/css">
td.required {
    color:red;
}
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...