2013-03-14 105 views
-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 
     } 
    }); 
+0

在哪裏'table's和'tr'。另外'id's意味着是唯一 – kidwon 2013-03-14 23:28:06

回答

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/

+0

過濾器具有表外發生。 – BumbleBee 2013-03-14 23:37:36

+0

我想要實現的是,如果「Mycondition」的子項包含「MyName」,那麼爲頁面上的所有表添加一個類到最後一個TR。頁面上只有一個「MyCondition」。 – BumbleBee 2013-03-14 23:44:13

+0

@BumbleBee我已經更新了答案,_again_。 – undefined 2013-03-14 23:47:03