2015-06-02 2 views
-1

JSFiddle: http://jsfiddle.net/grbw4tcg/1/Как настроить целевой дочерний уровень родителя в jQuery?

У меня есть страница, которая может иметь несколько сгруппированных входных блоков с классом, например «error_bx». Я хочу настроить таргетинг на первый элемент, который имеет этот класс, и внутри этого, я хочу проверить и посмотреть, есть ли у третьего ребенка третьего класса класс «равномерный выбор», а если он есть, добавьте к нему класс «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

Я пытаюсь найти «унифицированный выбор», который имеет ошибку. Может быть класс «единообразного выбора» без ошибки. Таким образом, он должен пройти через первый элемент, который имеет класс «error_bx». – ultimatecoder

ответ

1

Используйте методы дома обхода JQuery, перечисленные здесь: 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

Смежные вопросы