J'ai une fonction qui ajoute un <div>
à un élément au clic. La fonction obtient le texte de l'élément cliqué et l'assigne à une variable appelée name
. Cette variable est ensuite utilisée comme<div>
id
élément de l'élément ajouté.
Je dois voir si <div>
id
avecname
existe déjà avant d'ajouter l'élément mais je ne sais pas comment le trouver.
Voici mon code:
$("li.friend").live('click', function() {
name = $(this).text();
// if-statement checking for existence of <div> should go here
// If <div> does not exist, then append element
$("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
// Else
alert('this record already exists');
});
Cela semble assez simple, mais j'obtiens l'erreur « Fin de fichier inattendue lors de la recherche du nom de classe» . Je n'ai aucune idée de ce que cela signifie.
if (document.getElementById(name)) {
$("div#" + name).css({bottom: '30px'});
} else {
$("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
}
De plus, je veux pouvoir supprimer cet élément si je le ferme, ce qui devrait ensuite le supprimer div id [name]
du document, mais.remove()
ne le fait pas.
Voici le code pour cela:
$(".mini-close").live('click', function(){
$(this).parent().remove();
});
J'ai ajouté .mini-close
à la fonction d'ajout en tant qu'enfant de .labels
donc il y avait un moyen de fermer l'ajout <div>
si nécessaire. Après avoir cliqué .mini-close
et tenté de cliquer à nouveau sur le même nom, li.friends
il trouve toujours le div id [name]
et renvoie la première partie de ma if
déclaration.
la source
$("div#" + name).css({bottom: '30px'});
est faux, il devrait l'être$("div#" + name).css('bottom', '30px');
Réponses:
Vous pouvez utiliser
.length
après le sélecteur pour voir s'il correspond à des éléments, comme ceci:La version complète:
Ou, la version non jQuery pour cette partie (puisque c'est un ID):
la source
!$("#"+name).length)
:)===
au lieu de voir==
.La réponse de Nick le cloue. Vous pouvez également utiliser la valeur de retour de getElementById directement comme condition, plutôt que de la comparer à null (dans les deux cas, cela fonctionne, mais personnellement, je trouve ce style un peu plus lisible):
la source
Essayez de vérifier la longueur du sélecteur, s'il vous renvoie quelque chose, l'élément doit exister sinon.
Utilisez la première condition if pour id et la seconde pour class.
la source
la source
Un autre raccourci:
la source
Vous pouvez vérifier en utilisant jquery simplement comme ceci:
la source
Le moyen le plus simple est ..
Cela fait également partie des spécifications HTML5: https://www.w3.org/TR/html5/single-page.html#accessing-other-browsing-contexts#named-access-on-the-window-object
la source
Voici la fonction jQuery que j'utilise:
Cela renverra une valeur booléenne. Si l'élément existe, il renvoie vrai. Si vous souhaitez sélectionner l'élément par nom de classe, remplacez simplement
#
par.
la source
Vous pouvez le gérer de différentes manières,
L'objectif est de vérifier si le div existe puis d'exécuter le code. Facile.
État:
Remarque:
Cela renverra un nombre chaque fois qu'il est exécuté, donc s'il n'y a pas de div, il donnera un zéro [0], et comme nous, aucun 0 peut être représenté comme faux en binaire, vous pouvez donc l'utiliser dans l'instruction if. Et vous pouvez l'utiliser comme comparaison avec un nombre nul. tandis que tout il y a trois déclarations ci-dessous
la source
mettez l'id que vous voulez vérifier dans jquery is method.
la source