2016-07-23 3 views
0

Я после ввода, который находится внутри 3 divs, a td и tr. Для поиска нет доступных уникальных атрибутов (часто меняются идентификаторы и строки). Я пытаюсь пройти через DOM, начав с label в div в соседнем td, перейдите к next td, затем вниз через divdiv другой div затем в input.jQuery ближайший не проходит мимо родителя

Я начал с $('[title*="P2P"]').closest('td').next('.control-cell').find('input');

Он не выбирает вход для меня, поэтому я начал работать в обратном направлении, печатая класс выбранного элемента 1 шаг в то время, но он ломает, как только использование closest для Пройдите мимо первого div.

Мой jsfiddle: https://jsfiddle.net/28kacj28/

И мой HTML:

<tr class="control"> 
    <td class="label-cell left-label"> 
    <div class="workitemlabel"> 
     <label class="workitemcontrol-label" for="witc_135_txt" title="[Field Name: Process Start Date]">Start Date:</label> 
    </div> 
    </td> 
    <td class="control-cell"> 
    <div class="workitemcontrol"> 
     <div id="witc_135" class="combo input-text-box date-time drop"> 
     <div class="wrap"> 
      <input type="text" id="witc_135_txt" autocomplete="off" maxlength="255" title="7/7/2016 12:00:00 AM" aria-invalid="false"> 
     </div> 
     <div class="drop bowtie-calendar bowtie-icon"></div> 
     </div> 
    </div> 
    </td> 
</tr> 
<tr class="control"> 
    <td class="label-cell left-label"> 
    <div class="workitemlabel"> 
     <label class="workitemcontrol-label" for="witc_136_txt" title="[Field Name: P2P]">P2P:</label> 
    </div> 
    </td> 
    <td class="control-cell"> 
    <div class="workitemcontrol"> 
     <div id="witc_136" class="combo input-text-box date-time drop"> 
     <div class="wrap"> 
      <input type="text" id="witc_136_txt" autocomplete="off" maxlength="255" title="7/29/2016 12:00:00 AM" aria-invalid="false"> 
     </div> 
     <div class="drop bowtie-calendar bowtie-icon"></div> 
     </div> 
    </div> 
    </td> 
</tr> 
<span></span> 
+0

[ 'ближайший()'] (https://api.jquery.com/closest/) не делать то, что вы думаете, что он делает. Он будет проходить до предков дерева, как 'parents()'. –

+0

'testShit не определен' в консоли – guradio

ответ

1

Я не совсем уверен, что вы пытаетесь выбрать, но вы сделали две ошибки:

  1. Wrap элементы таблицы (<tr>, <td>) со столом. Браузеры будут удалять tr и td теги автоматически и динамически (что означает, что «View Source ...» по-прежнему будет показывать теги, даже если они были удалены), когда они неправильно упакованы тегом table. Это означает, что тэг tr.control не найден.
  2. Ваша переменная класса testClass назначалась из неопределенной (с ошибкой) переменной testShit вместо testStuff (строка 2). Держите его классным.

Я сделал исправление в этой скрипке: https://jsfiddle.net/28kacj28/3/

+1

Если вы используете инструменты F12, вы увидите, что делает рендеринг браузера, и теги tr и td были удалены из дерева DOM. – Steve

+0

Спасибо, это были только теги таблицы. Сегодня я мертв. – edified

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