JQuery: если UL пуст - PullRequest
       2

JQuery: если UL пуст

19 голосов
/ 30 августа 2011

Ладно, у меня есть диалоговое окно jQuery, в котором есть форма, и я до конца пытаюсь понять это ... Давайте посмотрим, смогу ли я выразить словами то, что пытаюсь сделать ..

У меня есть 3 текстовых поля.#apInterest, #apPayment и #apPrincipal в этом точном порядке.

основные английские термины того, что я пытаюсь сделать:

при keyup в #apInterest, если .valменьше 0 или больше 99,99 вызывает ошибку .. иначе проверьте ul#mylist, если он имеет li, если нет .hide

при включении в #apPayment, если .val меньше 0вызвать ошибку, иначе проверьте список на li скрыть, если нет.

#apPrincipal - это то же самое, что и #apPayment

то, что я имею в данный момент

$('#apInterest').live("keyup", function(e) {
var parent = $('.inter').parents("ul:first");
if ($('#apInterest').val() < 0 || $('#apInterest').val() > 99.99) {
    $('.inter').remove();
    $('#mylist').append('<li class="inter">Interest Rate cannot be below 0 or above 99.99</li>');
    $('#popuperrors').show();
    $(this).addClass('error');
} else {
    $(this).removeClass('error');
    $('.inter').remove();
    alert(parent.children().text);
    if (parent.children().length == 0){
        $('#popuperrors').hide();
    }
}
});

Хотя я также пытался

if ($("#mylist :not(:contains(li))") ){
$('#popuperrors').hide();
}

У меня была функция, аналогичная этой, для всех 3 текстовых полей, но, похоже, ничего из того, что я пробовал, не работает. Любые идеи о том, как завершить это

Ответы [ 3 ]

58 голосов
/ 30 августа 2011
if ($('#mylist li').length == 0) ...
5 голосов
/ 05 июня 2013

Мне нравится использовать метод children(), потому что он хорошо читается и работает, даже если вы уже кэшировали селектор для вашего ul. Вот как это выглядит:

$myList = $('#myList')
if ( $myList.children().length === 0 ) ...
3 голосов
/ 30 августа 2011

jQuery всегда возвращает массив элементов. Если совпадений не найдено, массив будет пустым. Пустой массив в Javascript оценивается как true:

console.log( !![] ); // logs: true

Вы хотите проверить длину возвращаемого набора:

if ( ! $("#mylist li").length ){
   $('#popuperrors').hide();
}
...