Как добавить класс к определенным элементам HTML, если они содержат определенное значение - PullRequest
0 голосов
/ 04 декабря 2011

Например, у меня есть следующий HTML-код:

<div id="stuff">
<span>1</span><span>2</span><span>3</span>
</div>

И мне нужно выбрать несколько таким образом:

$('#stuff').find('<span>1</span><span>2</span>').addClass('2');

Что должно превратить HTML в это:

   <div id="stuff">
    <span class="2">1</span><span class="2">2</span><span>3</span>
    </div>

Однако вышесказанное не работает.Кто-нибудь знает, как использовать jQuery для выбора вещей непосредственно из DOM, ища html?

Кроме того, диапазоны должны быть выбраны по порядку, поэтому, если бы у меня было это:И использовал вышеупомянутый JS, он бы ничего не делал.

Ответы [ 4 ]

1 голос
/ 04 декабря 2011

верно, если вы хотите искать различное содержимое, сделайте это:

<html>
   <head>
          <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
          <script type="text/javascript">
          $(function(){
                 var contains = [ 1 , 2 , 6 , 7 , 8 ] ;
                 $.map ( contains, function ( i ) {
                        $ ( '#stuff span:contains("'+ i +'")' ).addClass ( '2' ) ;
                 } ) ;
          });
          </script>
   </head>
   <body>
          <div id="stuff">
                 <span>1</span>
                 <span>2</span>
                 <span>3</span>
                 <span>4</span>
                 <span>5</span>
                 <span>6</span>
                 <span>7</span>
                 <span>8</span>
          </div>
   </body>

Выход:

<div id="stuff">
       <span class="2">1</span>
       <span class="2">2</span>
       <span>3</span>
       <span>4</span>
       <span>5</span>
       <span class="2">6</span>
       <span class="2">7</span>
       <span class="2">8</span>
</div>
1 голос
/ 04 декабря 2011

Использование $( '#stuff span:not(:contains(3))' ).addClass( '2' )

0 голосов
/ 04 декабря 2011

Мне не совсем ясно, каково ваше условие выбора, но вы можете использовать метод фильтра jquery с функцией для выбора промежутков.

Например, из документов:

$('li').filter(function(index) {
   return $('strong', this).length == 1;
}).css('background-color', 'red');

http://api.jquery.com/filter/

Вы должны проверить, если $ (this) .text () === независимо от того,

0 голосов
/ 04 декабря 2011

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

$('#stuff span:contains(1), #stuff span:contains(2)').addClass('2');

http://jsfiddle.net/SJxTu/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...