2016-09-26 5 views
0

Друзья, у меня следующий вопрос:Tag Div невозможно найти следующий элемент, с помощью JQuery

Следующий ниже код находит следующий элемент из щелкнул выберите:

<div class="caixa-dependentes2"> 
    <select name="campo0[1]" id="campo0[1]" class="form-control aa" required> 
    <option value="Habilitado">Habilitado</option> 
    <option value="Desabilitado">Desabilitado</option>             
    </select> 
    <input name="campo1[1]" class="bb" value="teste1" /> 
    <input name="campo2[1]" class="cc" value="teste2" /> 
    <br><br> 
    <select name="campo0[2]" id="campo0[2]" class="form-control aa" required> 
    <option value="Habilitado">Habilitado</option> 
    <option value="Desabilitado">Desabilitado</option>             
    </select> 
    <input name="campo1[2]" class="bb" value="test3" /> 
    <input name="campo2[2]" class="cc" value="teste4" /> 
</div> 

Он прекрасно работает.

Проблема заключается в том, что, в том числе дивы форматирования дочерей в поле, он не может найти больше следующий элемент, показывая их как undefined, смотрите код:

<div class="caixa-dependentes2"> 
    <div> 
    <select name="campo0[1]" id="campo0[1]" class="form-control aa" required> 
    <option value="Habilitado">Habilitado</option> 
    <option value="Desabilitado">Desabilitado</option>             
    </select> 
    </div> 
    <div><input name="campo1[1]" class="bb" value="teste1" /></div> 
    <div><input name="campo2[1]" class="cc" value="teste2" /></div> 
    <div class="clearfix"></div> 
    <div> 
    <select name="campo0[2]" id="campo0[2]" class="form-control aa" required> 
    <option value="Habilitado">Habilitado</option> 
    <option value="Desabilitado">Desabilitado</option>             
    </select> 
    </div> 
    <div><input name="campo1[2]" class="bb" value="test3" /></div> 
    <div><input name="campo2[2]" class="cc" value="teste4" /></div> 
</div> 

Мой JQuery:

$('.caixa-dependentes2').on('change', '.aa', function(){ 
    var proximo = $(this).nextAll('.bb').eq(0).val(); 
    alert(proximo); 
}); 

Какая ошибка я сделал?

+2

Ваш вход теперь вложен в div, 'nextAll()' будет соответствовать элементам sibling. Возможно, вам придется перебирать братьев и сестер и использовать 'find()' до тех пор, пока у вас не будет следующего матча. В противном случае начните использовать явные ссылки. – Scuzzy

+0

Как мне это сделать? – Luis

+0

Пожалуйста, включите ваш код здесь, не ссылайтесь на него. Убедитесь, что все в одном месте. Таким образом, людям легко увидеть полную картину. Вопрос даже имеет смысл, если другой сайт удаляет связанный контент. – Robert

ответ

0

Вы можете найти следующий .bb элемент таким образом (не невозможно, но EZ с JQuery):

$('.caixa-dependentes2').on('change', '.aa', function(){ 
 
    /* your select element > one parent > next sibling > find .bb */ 
 
    var proximo = $(this).parent().next().find('.bb').val(); 
 
    alert(proximo); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="caixa-dependentes2"> 
 
    <div> 
 
     <select name="campo0[1]" id="campo0[1]" class="form-control aa" required> 
 
      <option value="Habilitado">Habilitado</option> 
 
      <option value="Desabilitado">Desabilitado</option> 
 
     </select> 
 
    </div> 
 
    <div> 
 
     <input name="campo1[1]" class="bb" value="teste1" /> 
 
    </div> 
 
    <div> 
 
     <input name="campo2[1]" class="cc" value="teste2" /> 
 
    </div> 
 
    <div class="clearfix"></div> 
 
    <div> 
 
     <select name="campo0[2]" id="campo0[2]" class="form-control aa" required> 
 
      <option value="Habilitado">Habilitado</option> 
 
      <option value="Desabilitado">Desabilitado</option> 
 
     </select> 
 
    </div> 
 
    <div> 
 
     <input name="campo1[2]" class="bb" value="test3" /> 
 
    </div> 
 
    <div> 
 
     <input name="campo2[2]" class="cc" value="teste4" /> 
 
    </div> 
 
</div>

Также на JSFiddle

Я также хотел бы предложить вам группу/оберните поле выбора со входами this way. Таким образом вам все равно, где .bb или .cc находится в дереве документов, вы просто подходите к обложке closest() и find() ввод текста с указанным классом.

+0

большое спасибо! Это потрясающе! – Luis

+0

Я увидел, что он находит следующий элемент «bb». Но когда я тестировал элемент «cc», он отображается как неопределенный. Что не так? – Luis

+0

«cc» не следующий брат, для «cc» вы идете '$ (this) .parent(). Next(). Next(). Find ('.cc'). Val(); '. Вероятно, вы должны прочитать документы для jQuery [next()] (https://api.jquery.com/next/), [parent()] (https://api.jquery.com/parent/), [ближайший()] (https://api.jquery.com/closest/). – skobaljic

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