如果div中有特定的短语,我正在尝试让jquery自动填充输入
这是我到目前为止所拥有的....
<li>
<div>
<div class="gfield_admin_header_title">Orange</div>
<div>
<ul>
<li><input type="text" id="field_css_class" /></li>
</ul>
</div>
</div>
</div>
</li>
<li>
<div>
<div class="gfield_admin_header_title">Apple</div>
<div>
<ul>
<li><input type="text" id="field_css_class" /></li>
</ul>
</div>
</div>
</div>
</li>
<li>
<div>
<div class="gfield_admin_header_title">Pear</div>
<div>
<ul>
<li><input type="text" id="field_css_class" /></li>
</ul>
</div>
</div>
</div>
</li>
$("div > div:contains('Orange')").find("#field_css_class").val('DesiredVal');
如果我使用...
$("div").find("#field_css_class").val('DesiredVal');
然后它确实更改了输入,但对 #field_css_class 的所有实例执行此操作(如预期的那样)
所以我假设它不喜欢我的div:contains,谁能帮忙?
第一个 id必须是唯一的,因此请使用field_css_class
作为类属性,而不是将其用作 id
$("div").has('> div:contains("Orange")').find(".field_css_class").val('DesiredVal');
演示:小提琴
问题是元素field_css_class
不是包含文本Orange
的div的后代,而是同级元素的后代
注意:在标记中,每个li
元素的末尾都有一个额外的</div>
我认为你应该使用这个类,因为 id 不建议重复,你可以直接使用它
$(".className").val("value")
您可以使用:
$.each($('.gfield_admin_header_title'), function () {
if ($(this).text() == "Orange") {
$(this).next().find('.field_css_class').val('DesiredVal');
};
});
一些注意事项:
1)id
应该是唯一的,你应该使用类代替(在这种情况下.field_css_class
)
2)您的HTML标记似乎错误,在每个li
中,您在最后div
之前有多余的结束</div>
标记
3)上面的代码检查预期div
中的文本是否为橙色,如果是,则更改下一个input
值。
小提琴演示