Как судить о существовании предыдущего или следующего элемента с помощью jquery - PullRequest
17 голосов
/ 16 апреля 2011

предположим, у меня есть <ul>:

<ul>
    <li></li>
    <li></li>
    <li class="test"></li>
</ul>

Как я могу судить, что у .test есть следующий элемент с jquery?как это?:

if ($("li.test").next()) { …… }

странно то, что, даже я пишу как выше:

if ($("li.test").next()) {alert("true");}

это все еще предупреждает "истина", но, как вы видите, нет элементарядом с этим? почему это произошло?

Или что я могу сделать, это:

        for (i = 0; i < $("li").length; i++) {
            if ($("li").eq(i).hasClass("test")) {
                if (i == $("li").length - 1) {
                    alert("true");
                }
            }
        }

В настоящее время это может решить мою проблему, но есть ли простой способ?

спасибовы

Ответы [ 4 ]

38 голосов
/ 16 апреля 2011

Выбор jQuery всегда будет иметь логическое значение true (как в выражении if).Это потому, что это не нативный тип Javascript - это объект.

Вам необходимо проверить свойство length выбора.Если он пуст, это будет 0 и будет равно false, поэтому if не пройдет.Если оно не пустое, оно будет положительным целым числом и, следовательно, будет иметь значение true, поэтому условие пройдет.

if ($("li.test").next().length) { …… }
7 голосов
/ 16 апреля 2011
if ($("li.test").next().length > 0) { ... }

http://jsfiddle.net/Kfsku/

2 голосов
/ 16 апреля 2011

$("li.test").next().length;

Пример

1 голос
/ 16 апреля 2011

Вам необходимо проверить свойство length.

if ($("li.test").next().length) {
  //has next 
} else {
  //last elem
}

Имейте в виду, что jQuery обычно возвращает себя, чтобы вы могли связываться. Получение свойства length этого объекта даст вам информацию

...