Как определить, существует ли предыдущий или следующий элемент элемента с помощью jquery?

Предположим, у меня есть <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 ответа

Решение

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

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

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

http://jsfiddle.net/Kfsku/

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

пример

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

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

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

Другие вопросы по тегам