-1

ある条件を満たして何かをやろうとしています。しかし、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
        }
    });
4

1 に答える 1

1

クラス名で要素を選択するために ID セレクターを使用しており、children常に である jQuery オブジェクトも返します true

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/

于 2013-03-14T23:28:09.180 に答える