2015-06-02 67 views
-1

JSFiddle:http://jsfiddle.net/grbw4tcg/1/如何在jQuery中定位父級的第三個子級別?

我有一個頁面可能有多個分組的輸入塊,如「error_bx」。我想要定位第一個具有此類的元素,並且在此範圍內,我想檢查並查看它的第三級子級是否有一個名爲「uniform-select」的類,如果它具有它,則將類「focus」添加到它。

我到目前爲止一直在這裏,但我不知道如何使用變量'firstError'與遍歷子元素一起使用。另外,有沒有更有效的方法來做到這一點?

var firstError = $('.error_bx').first(); 

if($(firstError).children().eq(0).hasClass("uniform-select")){ 
     $($(firstError).children().eq(0)).addClass("focus");// 
    } 
    else if($(firstError +' > div.row > div > div').hasClass("uniform-select")){ 

     $('div.error_bx > div.row > div > div').addClass("focus"); 
    } 
    else{ 
     $($(firstError).children().eq(0)).focus(); 
    } 

HTML:

<div class="formgrp error_bx"> 
    <div> 
     <div> 
      <div class="selector uniform-select"> 
       <select> 
        <option>Month</option> 
        <option>January</option> 
        <option>February</option> 
        <option>March</option> 
        <option>April</option> 
       </select> 
      </div> 
     </div> 
     <div> 
      <input type="text"/> 
     </div> 
     <div> 
      <input type="text"/> 
     </div> 
    </div> 
</div> 

<div class="formgrp"> 
    <div> 
     <div> 
      <div class="selector uniform-select fixedWidth"> 
       <select> 
        <option>Month</option> 
        <option>January</option> 
        <option>February</option> 
        <option>March</option> 
        <option>April</option> 
       </select> 
      </div> 
     </div> 
     <div> 
      <input type="text"/> 
     </div> 
     <div> 
      <input type="text"/> 
     </div> 
    </div> 
</div> 

<div class="formgrp error_bx"> 
    <div> 
     <div> 
      <div class="selector uniform-select"> 
       <select> 
        <option>Month</option> 
        <option>January</option> 
        <option>February</option> 
        <option>March</option> 
        <option>April</option> 
       </select> 
      </div> 
     </div> 
    </div> 
</div> 

<div class="formgrp error_bx"> 
    <div> 
     <input type="text"/> 
    </div> 
</div> 
+1

爲什麼你不能使用'find('。uniform-select')。addClass('focus')'? –

+0

我正在嘗試找到出現錯誤的'uniform-select'。可能有一個「統一選擇」類沒有錯誤。所以,它必須通過具有'error_bx'類的第一個元素來完成。 – ultimatecoder

回答

1

使用JQuery的DOM遍歷方法,這裏列出: https://api.jquery.com/category/traversing/

在您的提琴我用這個目標你討厭的div:

var firstError = $('.error_bx').first(); 
f = firstError.children().children().children().eq(0); 
+0

謝謝!我想看看是否有一種方法在這一行中使用變量:'if($(firstError +'> div.row> div> div')。hasClass(「uniform-select」))' 但是,工作得很好。再次感謝! – ultimatecoder

相關問題