web-dev-qa-db-fra.com

jquery: si ul est vide

D'accord, j'ai une boîte de dialogue jQuery qui a un formulaire et je suis à la fin de mon esprit essayant de comprendre cela ... Voyons si je peux verbaliser ce que j'essaie de faire ..

J'ai 3 zones de texte. #apInterest, #apPayment et #apPrincipal dans cet ordre exact.

termes anglais de base de ce que j'essaie de faire:

au clavier dans #apInterest si .val est inférieur à 0 ou supérieur à 99,99 déclenche une erreur .. sinon vérifiez ul#mylist s'il en a li, sinon .hide

au clavier dans #apPayment si .val est inférieur à 0 déclencher une erreur sinon vérifier la liste pour li masquer sinon.

#apPrincipal est exactement la même chose que #apPayment

ce que j'ai en ce moment

$('#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();
    }
}
});

Bien que j'aie aussi essayé

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

J'avais une fonction similaire à celle-ci pour les 3 zones de texte, mais rien de ce que j'ai essayé ne semble fonctionner .. des idées sur la façon de terminer cela

22
Justin
if ($('#mylist li').length == 0) ...
65
Wulf

J'aime utiliser la méthode children() car elle se lit bien et elle fonctionne même si vous avez déjà mis en cache le sélecteur pour votre ul. Voici à quoi ça ressemble:

$myList = $('#myList')
if ( $myList.children().length === 0 ) ...
7
SimplGy

jQuery renvoie toujours un tableau d'éléments. Si aucune correspondance n'a été trouvée, le tableau sera vide. Un tableau vide en Javascript est évalué comme vrai:

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

Vous souhaitez vérifier la longueur de l'ensemble retourné:

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