jQuery选择具有任何可见的二级子元素的元素

时间:2012-12-24 02:25:10

标签: jquery jquery-selectors

我有以下代码,我试图隐藏并根据内部是否有任何错误显示div.validation-summary-errors

$('div.validation-summary-errors').each(function (index, element) {
    if ( ????? ) {
        $(element).parent().css({ "visibility": "visible" });
    }
    else {
        $(element).parent().css({ "visibility": "hidden" });
    }
});

标记如下所示。这是应该隐藏的情况,因为内部li内部没有任何错误,display: none

<div class="validation-summary-errors">
   <ul>
      <li style="display:none"></li>
   </ul>
</div>

3 个答案:

答案 0 :(得分:1)

if($(this).find('li').text().length){
    //there's an error
}else{
    //there is no error
}

答案 1 :(得分:1)

尝试这样的事情。您需要迭代列表项而不是ul本身,就像您在示例中一样。

$('div.validation-summary-errors li').each(function (index, element) {
    var $el = $(element);
    if ($el.text().length > 0) {
        $el.parent().css({ "visibility": "visible" });
    }
});​

答案 2 :(得分:1)

var errorEls=$('.validation-summary-errors');

errorEls.filter(':has(li:empty').show().end().filter(':not(:has(li:empty))').hide()

如果您的内嵌css显示为display:none,则css visibility将无法显示该内容。

show()hide()将更改display

相关问题