JQuery петля ul li - PullRequest
       4

JQuery петля ul li

2 голосов
/ 23 августа 2010

Что с этим не так? Я пытаюсь скрыть все пустое ли.

    $(document).ready(function() {
        $("#details li").each(function() {
            if ($(this).length == 0) {
                $(this).css({ display: "none" }); ;
            }
        });
    });

Markup:

<ul id="details">
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li></li>
 <li></li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
</ul>

Заранее спасибо

Ответы [ 3 ]

6 голосов
/ 23 августа 2010

Я думаю, что вам нужна длина .text(), например:

$(function() {
  $("#details li").each(function() {
    if ($(this).text().length == 0) {
      $(this).css({ display: "none" }); ;
    }
  });
});

Или немного короче:

$("#details li").filter(function() {
  return $(this).text().length == 0;
}).hide();

Или немного другая проверка, которая работает для ваших целей, любезно предоставлено @ Рафаэль :

$("#details li:empty").hide();
4 голосов
/ 23 августа 2010

Попробуйте использовать:

if ($(this).is(':empty')) {}

Кроме того, вы сможете переписать код выше как:

$("#details li:empty").each(function() {
  $(this).css({ display: "none" });
});

Или даже:

$("#details li:empty").hide();
0 голосов
/ 23 августа 2010

Выражение $(this).length не может быть нулем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...