JQuery:在不使用.each()的情况下查找无序列表中元素的ID属性

时间:2014-03-03 17:37:22

标签: jquery asp.net

我正在尝试找到ul的id,它在下面的代码中没有任何li元素:

if ( $("#myDiv ul.myClass > li").length < 1 ){
     alert($(this).attr("id"));
    }

我也看到了this article,但它使用了.each()函数。 我希望在不使用任何循环的情况下实现此目的。这可能吗?

JSFiddle link

在上面的JSFiddle中,我无法获取空UL元素的ID。 它警告它未定义。

有谁能请让我知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

在你发布的jsFiddle中你有一个糟糕的选择器来启动。您希望.myClass位于UL之前。

如果你解决了这个问题,那么你所要做的就是:

alert($("#myDiv > .myClass > ul:empty").prop('id'));

jsFiddle

选择器的简单派生也可以起作用:

  • #myDiv .myClass ul:empty - 没有立即继承
  • .myClass ul:empty - 任何ul:empty的实例,它是.myClass
  • 的后代
  • #myDiv ul:empty - myClass中的所有空ul

答案 1 :(得分:1)

您可以使用:empty选择器进行检查:

 alert($("#myDiv ul:empty").attr("id"));

但如果不止一个,这将只返回第一个匹配的ID。

编辑:您的HTML在jsFiddle中无效。李不能是DIV的直接孩子。