在父JavaScript中查找元素的最佳方法
我有一个功能,当用户键入城市的邮政编码时,城市名称被设置为城市名称输入字段。搜索工作正常,但我无法获取输入字段的相对id并在那里设置名称。我不能硬编码它的ID,因为这些表单是动态生成的 file.JS HTML在父JavaScript中查找元素的最佳方法,javascript,jquery,Javascript,Jquery,我有一个功能,当用户键入城市的邮政编码时,城市名称被设置为城市名称输入字段。搜索工作正常,但我无法获取输入字段的相对id并在那里设置名称。我不能硬编码它的ID,因为这些表单是动态生成的 file.JS HTML {%if client_form.post_code.errors%} {%endif%} 此表单是动态生成的,因此我需要能够通过指定正则表达式或使用通配符来查找城市输入id,就像我所做的那样 el.parent().next().find("[id*=city]").val(res
{%if client_form.post_code.errors%}
{%endif%}
此表单是动态生成的,因此我需要能够通过指定正则表达式或使用通配符来查找城市输入id,就像我所做的那样
el.parent().next().find("[id*=city]").val(result.name);
解释
el.parent()
:
.find(“[id*=city]”)
:
id将更改,因此id\u form-0-city
将在另一个生成的div中变为id\u form-1-city
。我必须能够识别应该从哪个父项更改其子项的输入值。在这种情况下,t应该始终是调用函数的字段的父项。是否需要将id=“id\u form-0-city”
值设置为id\u form-0-post\u code
?@guest271314否,我想更改字段的值,而不是属性id。尝试此$(e.target)。父项(.city auto”)。查找(“[id$=city]”val(result.name);代码>因为它以cityYes结尾,请参阅帖子。可以选择.parent().next()
然后选择.find(“[id*=city]”
Yeps。成功了。next()做什么?它向下推进一级?“next()做什么?它向下推进一级?”是的,关于el.parent()
。看,哦,好的。我现在明白了。谢谢你的解释。为什么parent().children(“class”).find(“id”)不起作用?“为什么parent().children(“class”).find(“id”)不起作用?”。parent().children()
将引用相同的父元素,而不是parentI的下一个元素。家长(“城市汽车”)。孩子(“班级”)。查找(“id”)?我认为他们可以找到父母(“限制”),然后从中得到指定的孩子(“类”),并在其中寻找一些东西(“一些东西”)。
<div class="row 50% city-auto">
<div class="3u 12u(narrower)">
<div class="form-warning">
{% if client_form.post_code.errors %}
<spam><img src="{{ STATIC_URL }}icons/warning_triangle_16.png" class="icon"> <spam class="icon fa-angle-down"></spam></spam>
{% endif %}
</div>
<!-- Triggers JavaScript -->
<input id="id_form-0-post_code" maxlength="5" name="form-0-post_code" placeholder="Post nr." type="text">
</div>
<div class="6u 12u(narrower)">
<div class="form-warning">
</div>
<!-- Should get value replaced by JavaScript -->
<input id="id_form-0-city" maxlength="30" name="form-0-city" placeholder="By" type="text" readonly="">
</div>
</div>
el.parent().next().find("[id*=city]").val(result.name);
<div class="3u 12u(narrower)">
<div class="6u 12u(narrower)">
<input id="id_form-0-city" maxlength="30" name="form-0-city" placeholder="By" type="text" readonly="">