【问题标题】:check if list item has more than 1 direct span child in jquery检查列表项在 jquery 中是否有超过 1 个直接跨度子项
【发布时间】:2013-09-21 15:18:42
【问题描述】:

如何在 jquery 中检查列表项是否有超过 1 个直接跨度子元素? 我现在有类似的东西:

if ( $('li:has(span)') ) {
   alert ('has span');
}

当有一个 span 子元素时,以及如果嵌套的 li 本身有一个或多个 span 子元素时,它就会发出警报。

【问题讨论】:

  • 你的意思是等于还是大于1
  • 等于或大于 2
  • $('li').filter(function(){return $(this).children('span').length > 1})

标签: jquery


【解决方案1】:

如果有 2 个或更多子 span 元素,则会发出警报。

$('li').each(function(){
    if($('> span',this).length >= 2)
    {
       alert('has span');
    }
});

或使用 A. Wolff 过滤器答案。

$('li').filter(function(){return $('> span',this).length > 1;});

http://jsfiddle.net/6tzbJ/

【讨论】:

  • 我会使用过滤器,在这里你不是在检查直接后代,而是所有:$(this).children('span').length 我的意思是
  • @A.Wolff 啊,真的。错过了。
  • 为什么不简单地$('li > span').length
  • 没关系,即使 $('> *',context) 语法在过去已被弃用(看起来没有更多关于它的 DOC)并且肯定仍然有效 +1
  • 别介意我最后的回复。我没有想到<li><span></span></li><li><span></span></li>。 @MathewFoscarini 是的-我刚刚意识到。星期五,对吧? :-)
【解决方案2】:
if ( $('li > span:eq(1)').length ) {
   alert ('has span');
}

The fiddle

【讨论】:

  • 这会添加所有li的所有span
【解决方案3】:
if ( $('li > span:eq(0)').length > 0 ) {
   alert ('has span');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 2021-07-23
    相关资源
    最近更新 更多