Цепочка фильтров по содержимому
Приветствую!
В общем дело обстоит так: Занят пользовательским скриптом. Есть элементы вида <tr class="alliance" style="display: table-row"> <td align="left" valign="center" height="100"> <div class="ofblock2"> <b> Отправлено: <a href="...">Отправитель</a> </b> (12-07-22 14:31:35) <br> <b>Тема:</b> Общее сообщение <br> <b>Содержание:</b> <br> текст сообщения </div> </td> <td> ... </td> </tr> и
<tr class="alliance" style="display: table-row">
<td align="left" valign="center" height="100">
<div class="ofblock2">
<b>
Отправлено:
<a href="...">Отправитель</a>
</b>
(12-07-24 14:49:07)
<br>
<b>Тема:</b>
<b>Общее сообщение</b>
Куплю
<br>
<b>Содержание:</b>
<br>
текст сообщения
</div>
</td>
<td align="center" valign="center">
...
</td>
</tr>
Их различие в наличии тега <b> для "Общее сообщение". Мне надо найти как раз это самое общее сообщение с тегом. Делаю я это так:
$('tr',$(table)).each(function(indx){
...
}else if($(this).is('*:has(b):contains(Общее сообщение)')){
$(this).addClass('alliance');
...
});
Только по непонятным мне причинам поиск срабатывает и на общее сообщение вне тега <b>. Объясните почему так и как будет правильно? |
$('tr b').filter(function() { return $(this).text() == 'your_message' }).addClass('alliance');
Если я правиьно понял вопрос. |
$('table tr').each(function(indx){
//...
if($(this).find("b:contains('Общее сообщение')").length){
$(this).addClass('alliance');
}
//...
});
|
Спасибо, навели на мысль:
}else if($('b:contains(Общее сообщение)',$(this)).length != 0){
$(this).addClass('alliance');
Так работает =) Но хотелось бы понять почему не работал первоначальный вариант? Где там косяк? UPD: хо-хо =) не было ответа Deff, когда свой катал) Однако почти похоже. UPD2: возник немного офтоповый вопрос.. вот есть два варианта:
if($(this).is('*:contains(System)')){
$(this).addClass('system');
if($('*:contains(System)'),$(this).length){
$(this).addClass('system');
Что будет работать быстрей? Я конечно сомневаюсь что там разница будет существенная, но мне так.. для общего развития) И если можно с объяснением возникновения разницы (для понимания) :) |
| Часовой пояс GMT +3, время: 15:17. |