2013-08-12 3 views
0

У нас есть простая HTML-страница с несколькими тегами span и нужно изменить стиль CSS в тексте в зависимости от того, что они содержат. Это отлично работает для ПЕРВОГО появления на странице, но не для второго (предположительно, все более поздние вхождения).Условный JQuery css работает только один раз

$(function(){ 
    $("span#someId:contains('Text to change red')").css('color','red'); 
}); 

Пролеты выглядеть следующим образом:

<td><span id="someId">Text to change red</span></td> 

Если же интервал (с тем же идентификатором ..) повторяется на странице, только первое вхождение показывает красный - он должен превратить их всех красный. Что происходит?

+0

Необходимо обернуть это в документе. уже и не забудьте ссылаться на внешние js на каждой странице, что y мы будем использовать его. –

+6

'id' должен быть уникальным для всех элементов на странице. –

+0

Чтобы расширить, я предполагаю, что это по соображениям производительности. Поскольку 'id' должен быть уникальным, как только он найдет его, нет причин продолжать искать больше. –

ответ

3

Используйте классы не идентификатор (а идентификаторы должны быть уникальными - 1 на странице):

<td><span class="myspan">Text to change red</span></td> 

А потом:

$("span.myspan:contains('Text to change red')").css('color','red'); 

Или, если единственная важная часть текста в span вы можете упростить его до чего-то вроде:

$("td span:contains('Text to change red')").css('color','red'); //If td is even needed! 
Смежные вопросы