-1

在我的 Dom 中,我得到了一些li,其中包括一些 as.net 文本框作为它们的子项。我需要将一些文本框设置为可见 false。当我这样做时,li围绕此文本框的包裹在 html 中显示为空.所以我决定删除它们,我使用了这段代码(还有更多)

    <script type="text/javascript">
    $(document).ready(function (e) {
        $('#u li').each(function () {
            if ($(this).html().length == 0) {
                $(this).remove();
            }
        });
    });
</script>

令我惊讶的是,没有li进入空的循环。注意添加的 HTML

    <ul id="u">
                   <li class="first-item odd-item">
                       <span id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_lblFirstname">Firstname</span>
                        <input type="text" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_txtFirstname" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$cphContents$ShopConfirmation_2$txtFirstname">
                        <span style="color:Red;visibility:hidden;" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_reqirefieldFirstname">*</span>
                   </li>
                   <li class="odd-item">
                       <span class="m-left" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_lblLastname">Lastname</span>
                        <input type="text" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_txtLastname" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$cphContents$ShopConfirmation_2$txtLastname">
                       <span style="color:Red;visibility:hidden;" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_reqirefieldLastname">*</span>
                   </li>
                   <li class="third-item odd-item">
                       <span id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_lblEmployeenumber">Emloyee Number</span> 
                        <input type="text" id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_txtEmployeenumber" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$cphContents$ShopConfirmation_2$txtEmployeenumber">
                    </li>
                    <li class="odd-item">


                    </li>
                    <li class="odd-item">
                        <span id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_lblAddress">Address</span>
                        <select id="ContentPlaceHolderDefault_cphContents_ShopConfirmation_2_dropdownaddress" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$cphContents$ShopConfirmation_2$dropdownaddress">
    <option value="-----------Select-----------">-----------Select-----------</option>
    <option value="dfddfd">dfddfd</option>
    <option value="gdfgfg">gdfgfg</option>
    <option value="fhgfgfgf">fhgfgfgf</option>

</select>
                    </li>
                    <li class="third-item last-item odd-item">


                    </li>

                  </ul>
4

4 回答 4

3

从您编辑到问题中的 HTML 来看,<li>元素内部没有内容。但是,innerHTML元素的 不是空字符串,它是一个包含一些空格的字符串。简单地修剪 HTML 应该可以工作:

$(document).ready(function (e) {
    $('#u li').each(function () {
        if ($.trim($(this).html()).length == 0) {
            $(this).remove();
        }
    });
});

看看这个 jsFiddle 演示

于 2013-02-25T10:09:46.317 回答
0
$('#u li').each(function(){
   if($('input', this).is(':hidden')){
      $(this).remove();
   }
});
于 2013-02-25T10:13:15.303 回答
0
if ( $(this).is(':empty') ){  // BOOLEAN TRUE / FALSE
  //do something
}
于 2013-02-25T10:15:04.347 回答
0

更新:我现在投票支持@Anthony Grist 的回答 - 空格似乎是问题所在。

我认为 OP 不是在尝试检查,<input type="hidden">而是在检查== 'none'的<input>元素。style.display

所以,这里有一个解决方案:

$('#u li input').each(function() {
    var display = $(this).css('display');
    if (display=='none') {
        $(this).closest('li').remove();
    }
});
于 2013-02-25T10:27:47.363 回答