2010-08-23 7 views
0

L'extrait suivant ne fonctionne pas pour moi. Fondamentalement, je veux vérifier s'il y a un élément d'entrée avec le nom "documents []" et la valeur item.id et return void.Vérifiez si un élément existe dans le DOM

Je pensais que cette ligne le ferait: $("input [name='documents[]'][value='"+item.id+"'") != false.

Cependant, l'instruction renvoie true à chaque fois. J'ai regardé la documentation pour le constructeur de jQuery et il ne mentionne rien de retourner false si aucun élément n'est trouvé pour le sélecteur.

Comment puis-je savoir si le sélecteur ne correspond à aucun élément?

$.ajax({ 
     url:'/myid/documents/json_get_documents/'+request.term, 
     dataType:"json", 
     success: function(data) { 
      response($.map(data, function(item){ 
       if($("input [name='documents[]'][value='"+item.id+"'") != false) { 
        return; //This item has already been added, don't show in autocompete 
       } 
       return { 
        label: '<span class="file">'+item.title+'</span>', 
        id: item.id, 
        value: 'Search by title' 
       } 
      })) 
     } 
    }); 

Répondre

3
$("input [name='documents[]'][value='"+item.id+"'"]).length 

Cette propriété a une valeur de longueur supérieure à zéro si cet élément est disponible dans les DOM. Vous voyez, quand vous sélectionnez un élément en utilisant le sélecteur de jquery, il crée un tableau spécial (ou vous pourriez dire, un objet jquery) avec cet élément. Si plusieurs éléments peuvent être sélectionnés avec ce sélecteur, alors le tableau les contiendra tous et si aucun élément ne correspond à ce sélecteur, le tableau n'aura rien, et dans ce cas sa propriété length sera nulle.

Espérons que ça aide.

2

Vous pouvez utiliser .length. $('lol').length retours 0 tandis que $('body').length retours 1.

+0

Oui, un appel de fonction 'jQuery' (avec un sélecteur et éventuellement le contexte) retournera toujours un objet de collection jQuery, qui contient la propriété' length' - ou le nombre d'éléments correspondants. –

Questions connexes