Comment puis-je vérifier pour vide attr() en jquery?
J'ai un peu de divs qui sont créés à l'aide de PHP. Le point d'ancrage à l'intérieur de la div a toujours un HREF, même si elle est vide. En gros, je suis en train d'essayer de détecter si le HREF est vide. Si il a un contenu, ne rien faire, si c'est vide, bande le texte, supprimer le point d'ancrage, leur mettre le texte dans.
Voici la div:
<div class="title">
<a class="article" href="">Lorem Ipsum</a>
</div>
Voici mon code:
jQuery(document).ready(function($) { //required for $ to work in WordPress
$(".article").each(function(){
if ($(this).attr('href') !== undefined) {
return;
} else {
var linkTitle = $(this).html();
$(this).parent().empty().html(linkTitle);
}
});
//-->
});
où est l'article dans le code html de mon erreur que je vois c'
OriginalL'auteur Jared | 2010-09-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier un vide
href
attribut et "ouvrir" ces liens à l'aide de.remplaceavec()
comme ceci:Vous pouvez lui donner un essai ici.
J'aime la façon dont cela supprime la nécessité d'une branche conditionnelle
Il fonctionne dans votre lien, mais quand je l'ai mis dans mon code, j'obtiens un
Uncaught SyntaxError: Unexpected token ILLEGAL
Je sonne comme vous avez copié un peu bizarre de caractères ascii à la recherche comme un espace de là...essayez de supprimer l'espacement autour de quelque chose que vous avez copié.
J'ai copier/coller dans le bloc-notes d'essayer et de se débarrasser de caractères illégaux, semble fonctionner maintenant, merci!. Mais je ne suis pas sûr de comprendre POURQUOI ce code fonctionne? Ne remplaceavec() ont une certaine capacité qui vérifie automatiquement les attributs, et s'il ne trouve pas tout, il exécute sa fonction?
OriginalL'auteur Nick Craver
Vous pouvez simplement tester l'attribut comme un booléen, au lieu de le tester contre
undefined
:this.href
est beaucoup plus facile 😉n'est-ce pas juste vérifier si il y a un href attr(), pas si elle est vide?
J'ai parfois l'oublier qu'il y a ce archaïque "JavaScript" chose assis en dessous de jQuery :p
Non, il sera de retour la valeur de l'attribut ou de
undefined
si elle n'existe pas. En JavaScript,""
(une chaîne vide) est équivalente à la valeur booléenne false.attr()
permettra d'évaluer àfalse
si l'attribut n'existe pas ou est vide.notez que IE8 sera également renvoyer une chaîne vide si le href n'existe pas. La si expression est toujours valide, mais n'essayez href="" et aucune href comme équivalent sur IE.
OriginalL'auteur meagar
De simplement se débarrasser de la 'href' attribut:
Pour le ciblage multiple, par exemple le "style" de l'attribut:
De cette façon, vous n'aurez qu'à se débarrasser de l'Attribut quand il est vide au lieu de supprimer la totalité de l'élément lui-même.
Un code exemple serait:
OriginalL'auteur Kevin