JQuery: cache l'ancre si href est vide
Je suis dessus depuis un moment maintenant. Fondamentalement, je dois vérifier où a href
sur une balise d'ancrage avec la classe .pdf-download
est vide, et si elle l'est, de la cacher.
j'ai essayé quelques options mais sans succès. C'est ce que j'ai jusqu'à présent:
$("a.pdf-download").each(function (i) {
if ($('[href]:empty',this).length == 1) {
$(this).hide();
} else {
$(this).show();
}
});
7 réponses
if ($(this).attr('href') != '') {
$(this).hide();
} else {
$(this).show();
}
notez que vous pouvez aussi faire cela dans css avec sélecteur d'attribut:
a.pdf-download[href='']{
display:none;
}
ceci n'est pas supporté dans ie6 cependant.
Vous pouvez aussi le faire avec un sélecteur jQuery, comme suit:
// Hide any links with blank href or no href attribute
$('a.pdf-download[href=], a.pdf-download:not([href])').hide();
utilisez cette solution. il produira également les résultats souhaités lorsque le href
l'attribut n'est pas défini. Si vous utilisez un sélecteur CSS (JQuery), inexistant href
attributs ne seront pas détectés.
$("a.pdf-download").each(function (i) {
if (!this.href) {
$(this).hide();
} else {
$(this).show();
}
})
Il n'est pas nécessaire d'utiliser une méthode JQuery pour obtenir le href
attribut, parce quethis.href
est tout aussi lisible, plus rapide et aussi universellement supporté.
Est-ce que quelque chose comme ça marche?
$("a.pdf-download").each(function (i) {
if ($(this).attr('href').length == 0) {
$(this).hide();
} else {
$(this).show();
}
});
$(function() {
$('a').each(function() {
(!$(this).attr('href')) ? $(this).hide() : $(this).show();
});
});
Demo Tout-Puissant:http://jsfiddle.net/each/j9DGw/
$("a.pdf-download").each(function() {
var href = $(this).attr("href");
if(href == '') {
$(this).remove();
}
});
ou
$("a.pdf-download[href='']").remove()
je suis moi-même débutant en jquery, mais c'est comme ça que je le ferais:
$("a.pdf-download").each(function (i) {
var aHref = $(this).attr('href');
if (aHref == '' || !aHref) {
$(this).hide();
};
});