我正在尝试使用$(document.currentScript)
从脚本标记遍历树,然后遍历树,选择输入元素。我已经尝试了许多变种,但它们似乎都不起作用。我能够得到顶级div $(document.currentScript).closest("div").parent("div")
,但没有运气下去
<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>
答案 0 :(得分:1)
听起来你可能有一个解决方案,但这是使用基本相同代码的另一种方式。您将当前脚本值存储在变量中,然后在文档就绪回调中引用它:
<div id="p9t2c13">
<div class="control">
<label for="c13">
<h3> HiddenInstanceId </h3>
<p>
<script>
(function(){
var thisScript = $(document.currentScript);
$(function(){
var test = thisScript.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 :(得分: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>
&#13;