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();
  }
});
12
demandé sur Zentaurus 2011-09-28 20:03:39

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.

20
répondu amosrivera 2011-09-28 16:06:12

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();
6
répondu Elliot Nelson 2011-09-28 16:17:20

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é.

4
répondu Rob W 2011-09-28 16:08:28

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();
  }
});
3
répondu Matt 2011-09-28 16:08:13
$(function() {

    $('a').each(function() {
        (!$(this).attr('href')) ? $(this).hide() : $(this).show();
    });

});

Demo Tout-Puissant:http://jsfiddle.net/each/j9DGw/

1
répondu daryl 2011-09-28 16:15:23
$("a.pdf-download").each(function() {
    var href = $(this).attr("href");
    if(href == '') {
        $(this).remove();
    }
});

ou

$("a.pdf-download[href='']").remove() 
1
répondu David Houde 2011-09-28 16:18:35

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();

    };

});

Démo: http://jsfiddle.net/BZq9c/1/

0
répondu Oskar 2011-09-28 16:10:48