0

我有以下代码,我试图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>
4

3 回答 3

1
if($(this).find('li').text().length){
    //there's an error
}else{
    //there is no error
}
于 2012-12-24T02:34:09.773 回答
1

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

$('div.validation-summary-errors li').each(function (index, element) {
    var $el = $(element);
    if ($el.text().length > 0) {
        $el.parent().css({ "visibility": "visible" });
    }
});​
于 2012-12-24T02:35:21.597 回答
1
var errorEls=$('.validation-summary-errors');

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

如果您有display:none如图所示的内联 css...css visibility将不会使其可见。

show()并且hide()会改变display

于 2012-12-24T02:39:52.513 回答