检查元素子元素内的特定文本

时间:2013-03-14 23:23:35

标签: jquery contains

我正在尝试根据遇到的某种条件执行某些操作。但是jquery代码似乎没有用。

HTML:

      <p class="Mycondition">
           <span><b>»</b></span>&nbsp;
           <span id="nav"><a href="#" id="lnkMycondition">Overview</a> 
              <span class="separator">
                 <b>»</b>
              </span>
           </span>
           <span><b>MyName</b></span>
        </p>


     <div class="prepend-1 span-22">
     <table class="hor" title="">
       <tbody>

             <tr>
                <td>abc</td><td>1</td>
            </tr>
     </tbody></table>
    </div>

Jquery:

$('table').each(function () {

        if ($('#Mycondition').children(':contains("MyName")')) {
            // do stuff
        }
    });

1 个答案:

答案 0 :(得分:1)

您正在使用ID选择器按类名选择元素,children也返回始终为true的jQuery对象。

尝试使用has方法:

$('table')
     .has('.Mycondition:has(:contains(MyName))') // filtering tables
     .find('tr:last') // finding last tr descendants 
     .addClass('Myclass'); // and adding classes

或者:

$('table').filter(function () {
    return $('.Mycondition', this)
                .children(':contains("MyName")').length;
}).find('tr:last').addClass('Myclass');

更新

如果你有几个Mycondition个元素,并且想要为下一个兄弟姐妹添加课程,你可以尝试:

$('p.Mycondition:has(:contains(MyName))') 
     .next('table') 
     .find('tr:last') // finding last tr descendants 
     .addClass('Myclass'); // and adding classes

$(function() {
    if ( $('p.Mycondition').children(':contains("MyName")').length ) {
        $('table').find('tr:last').addClass('myclass');
    }
});

http://jsfiddle.net/AH5KY/