如何将类添加到特定的html元素,如果它们包含特定值

时间:2011-12-03 21:56:45

标签: javascript jquery dom select jquery-selectors

例如,我有以下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>

但是,上述方法无效。有人知道如何通过查找html来使用jQuery直接从DOM中选择内容吗?

此外,必须按顺序选择范围,所以如果我有这个:

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

使用上面的JS,它什么都不做。

4 个答案:

答案 0 :(得分:1)

使用$( '#stuff span:not(:contains(3))' ).addClass( '2' )

答案 1 :(得分:1)

是的,如果你想查找各种内容,请执行以下操作:

<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>

答案 2 :(得分:0)

您可以使用:contains伪类:

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

http://jsfiddle.net/SJxTu/

答案 3 :(得分:0)

我不完全清楚您的选择条件是什么,但您可以使用带有函数的jquery过滤器方法来选择跨度。

例如来自文档:

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

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

您需要检查$(this).text()===无论