2016-11-22 3 views
1

Я пытаюсь пересечь дерево из тега скрипта с помощью $(document.currentScript), а затем пересечь назад дерево, выбрав элемент ввода. Я пробовал много вариантов спускаться по дереву, но все они, похоже, не работают. Я был в состоянии получить верхнюю DIV, $(document.currentScript).closest("div").parent("div") но есть не повезло спускаясьJQuery Tree Traversal - идет вверх по дереву, но не вниз

<div id="p9t2c13"> 
    <div class="control"> 
     <label for="c13"> 
     <h3> HiddenInstanceId </h3> 
     <p> 
      <script> 
       if (typeof counter == "undefined") { 
        counter = 0; 
       } 

       counter++; 

       var test = $(document.currentScript).closest("div").parent("div"); 
       console.log($(test).find("input")) 
      </script> 
     </p> 
     </label> 
     <p class="ctrlinvalidmessage"></p> 
     <fieldset> 
     <div class="input text"> 
      <input id="c13" type="text" name="c13" value="" maxlength="1000"> 
     </div> 
     </fieldset> 
    </div> 
</div> 
+1

Что console.log (тест); вернуть? –

+0

Он возвращает '[div # p9t2c13, prevObject: init [1], контекст: сценарий, селектор:. .closest (div) .parent (div)"] 'и ссылки на правильный объект, но не тег' ' что я ищу –

+1

[ссылка] (https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript) Важно отметить, что это не будет ссылаться на элемент

1

Он отлично работает, если вы ждете $(document).ready(), прежде чем искать что-то, расположенной ниже текущего скрипта.
Вот это работает:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="p9t2c13"> 
 
    <div class="control"> 
 
     <label for="c13"> 
 
     <h3> HiddenInstanceId </h3> 
 
     <p> 
 
      <script> 
 
       if (typeof counter == "undefined") { 
 
        counter = 0; 
 
       } 
 

 
       counter++; 
 

 
       var test = $(document.currentScript).closest("div").parent("div"); 
 
       // here is the change: 
 
       $(document).ready(function() {console.log(test.find("input"));}); 
 
      </script> 
 
     </p> 
 
     </label> 
 
     <p class="ctrlinvalidmessage"></p> 
 
     <fieldset> 
 
     <div class="input text"> 
 
      <input id="c13" type="text" name="c13" value="" maxlength="1000"> 
 
     </div> 
 
     </fieldset> 
 
    </div> 
 
</div>

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