检查div是否包含元素并且没有某些元素

时间:2014-05-07 20:38:01

标签: javascript jquery html css

我已经打开了一个类似的线程,除了div没有第二个元素的条件。 所以我的上一个问题是:

我有一些看起来像这样的代码

<p class="elementWrap">
  <label>Phone</label>
  <input class="form_elem" type="text" name="form_phone">
  <span class="form_required">*</span>
</p>

有时喜欢这个

<p class="elementWrap">
  <label>Name</label>
  <input class="form_elem" type="text" name="form_name">
</p>

rgraham发布了这个解决方案,效果很好

$(".elementWrap").filter(function() {
    return $(this).children(".form_required").length;
}).find("label").css({'width':'auto','margin':'0px'});

但是现在我不想在具有Radio类型的输入的标签上应用此代码。 我想过像返回孩子的长度.form_required而不是输入类型无线电。但不知道如何将其写为代码。 = /

3 个答案:

答案 0 :(得分:1)

$(".elementWrap").filter(function() {
    var has_required = $(this).children(".form_required").length > 0,
        no_radio    = $(this).find(':radio').length < 1;

    return has_required && no_radio;
})

答案 1 :(得分:0)

来自Jquery文档:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>has demo</title>
    <style>
        .full {
            border: 1px solid red;
        }
    </style>
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<ul>
    <li>Does the UL contain an LI?</li>
</ul>
<script>
    $("ul").append("<li>" +
        ( $("ul").has("li").length ? "Yes" : "No" ) +
        "</li>");
    $("ul").has("li").addClass("full");
</script>
</body>
</html>

http://api.jquery.com/has/

答案 2 :(得分:0)

$(".elementWrap:has(.form_required)").filter($(".elementWrap:not(:has(:radio))"))

知道$one.filter($two)$one ∩ $two

DEMO