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