Цепочка фильтров по содержимому
Приветствую!
В общем дело обстоит так: Занят пользовательским скриптом. Есть элементы вида <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, время: 20:29. |