Подтвердить что ты не робот

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

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

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

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

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

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

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

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

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

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

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

Благодарю вас

4b9b3361

Ответ 1

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

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

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

Ответ 4

Вам нужно проверить свойство length.

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

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