Javascript 检查容器是否包含元素
我有一张表格。结构如下所示:Javascript 检查容器是否包含元素,javascript,jquery,html,styling,Javascript,Jquery,Html,Styling,我有一张表格。结构如下所示: <p class="elementWrap"> <label>Name</label> <input class="form_elem" type="text" name="form_name"> </p> <p class="elementWrap"> <label>Phone</label> <input class="form_elem" t
<p class="elementWrap">
<label>Name</label>
<input class="form_elem" type="text" name="form_name">
</p>
<p class="elementWrap">
<label>Phone</label>
<input class="form_elem" type="text" name="form_phone">
<span class="form_required">*</span>
</p>
$('p.elementWrap').each(function(){
if($(this).find('span.form_required').length > 0)
{
$(this).find('label').css('background','red');
// do whatever needed
}
})
但这似乎不起作用…(我尝试了很多if语句,但到目前为止没有一个有效=/您可以使用并选择所有对象。elementWrap
对象具有直接。form\u required
子对象-然后在该子集中找到标签:
$(".elementWrap").filter(function() {
return $(this).children(".form_required").length;
}).find("label").css({'width':'auto','margin':'0px'});
几乎总是有一种方法可以避免使用。每个和许多if
语句。这样做:
<p class="elementWrap">
<label>Name</label>
<input class="form_elem" type="text" name="form_name">
</p>
<p class="elementWrap">
<label>Phone</label>
<input class="form_elem" type="text" name="form_phone">
<span class="form_required">*</span>
</p>
$('p.elementWrap').each(function(){
if($(this).find('span.form_required').length > 0)
{
$(this).find('label').css('background','red');
// do whatever needed
}
})
您可以使用:has()
伪选择器,例如:
$('.elementWrap:has(.form_required)').find('label').css({'width':'auto','margin':'0px'});
试试:
$('.elementWrap').each(function () {
if ($(this).find('span.form_required').length != 0) {
$(this).find('label').css({
'width': 'auto',
'margin': '0px'
});
}
});
试试这个:
jQuery('.elementWrap').has('.form_required').find('label').css({'width':'auto','margin':'0px'});
我为你做了一个JSFIDLE:
说明:
首先,我使用elementWrap类选择每个元素(无需对每个元素进行排序)
但我只选择那些,它有一个子类,它的form_必需类带有.HAS()方法。
从这些元素中,我想找到标签并应用一些自定义样式
希望这对您有所帮助!虽然我知道了这个想法,但我认为OP希望选择标签其中.elementWrap:has(.form\u required)
。即$('.elementWrap:has(.form\u required)')。查找(“标签”)
…+1绝对比筛选更容易阅读。对于OP::has
搜索所有子代,而不仅仅是直接子代。始终存在节点。contains
: