如果孩子没有元素`<ul>`</ul> </div>,则隐藏父母`<div>`

时间:2014-08-13 19:40:37

标签: javascript jquery

<div id="I">
    <h3></h3>
    <div class="C">
        <ul>...</ul>
    </div>
</div>

如果元素id="I"不存在,如何使用JQuery或JavaScript,如何隐藏整个<ul>元素?

3 个答案:

答案 0 :(得分:2)

试试这个:

$("#I:not(:has(>ul))").hide();

<强> DEMO

答案 1 :(得分:2)

您可以使用以下Jquery来确定div中是否存在ul元素,id =“I”

$(document).ready(function(){
var size = $("#I ul").length;

if (size === 0)
    $("#I").hide();
});

JsFiddle

编辑:

我已经更新了我的脚本,因为如果你有多个id为“I”的div标签,它将不起作用。根据您的描述,您希望删除ID为“I”且不包含ul元素的所有div标记。以下是符合您问题要求的更新后的JsFiddle:enter link description here

以下是执行此操作的代码:

$(document).ready(function(){
    $("div").each(function(index, element){
        var id = $(this).attr("id");

        var numOfUl = $(this).find("ul").length;

        if (id == "I" && numOfUl === 0){
            $(this).hide();   
        }
    });
});

答案 2 :(得分:0)

$.fn.isNot = function(trueFalse) {
    var elem = $(this);
    var _isNot = elem.is("*");
    var _parent = $(elem.selector.split(" ").slice(0, 1)[0]);
    return  _isNot 
            ? trueFalse(_isNot, elem, _parent) 
            : trueFalse(_isNot, _parent)
};

$("#I ul").isNot(function(trueFalse, parent) {
    console.log(trueFalse, parent);
    if (!trueFalse) {
        parent.hide()
    };
});

http://jsfiddle.net/guest271314/ns09astu/