JQuery: скрыть привязку, если href пуст - PullRequest
12 голосов
/ 28 сентября 2011

Был на этом некоторое время сейчас. По сути, мне нужно проверить, где href на теге привязки с классом .pdf-download пусто, и если это так, скрыть его.

Я попробовал несколько вариантов, но безуспешно. Это то, что у меня есть:

$("a.pdf-download").each(function (i) {
  if ($('[href]:empty',this).length == 1) { 
    $(this).hide();
  } else {
    $(this).show();
  }
});

Ответы [ 7 ]

23 голосов
/ 28 сентября 2011
if ($(this).attr('href') != '') { 
    $(this).hide();
} else {
    $(this).show();
}

Обратите внимание, что вы также можете сделать это в css с помощью селекторов атрибутов :

a.pdf-download[href='']{
    display:none;
}

Хотя это не поддерживается в ie6.

6 голосов
/ 28 сентября 2011

Вы также можете сделать это с помощью селектора jQuery следующим образом:

// Hide any links with blank href or no href attribute
$('a.pdf-download[href=], a.pdf-download:not([href])').hide();
4 голосов
/ 28 сентября 2011

Используйте это решение. он также даст желаемые результаты, когда атрибут href не определен. Если вы используете селектор CSS (JQuery), несуществующие атрибуты href не будут обнаружены.

$("a.pdf-download").each(function (i) {
    if (!this.href) { 
        $(this).hide();
    } else {
        $(this).show();
    }
})

Нет необходимости использовать метод JQuery для получения атрибута href, потому что this.href так же удобочитаем, быстрее и универсально поддерживается.

3 голосов
/ 28 сентября 2011

Хотелось бы что-нибудь подобное?

$("a.pdf-download").each(function (i) {
  if ($(this).attr('href').length == 0) { 
    $(this).hide();
  } else {
    $(this).show();
  }
});
1 голос
/ 28 сентября 2011
$("a.pdf-download").each(function() {
    var href = $(this).attr("href");
    if(href == '') {
        $(this).remove();
    }
});

или

$("a.pdf-download[href='']").remove() 
1 голос
/ 28 сентября 2011
$(function() {

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

});

Всемогущий Демо: http://jsfiddle.net/each/j9DGw/

0 голосов
/ 28 сентября 2011

Я сам начинающий jquery, но вот как бы я это сделал:

$("a.pdf-download").each(function (i) {

    var aHref = $(this).attr('href');

    if (aHref == '' || !aHref) {

        $(this).hide();

    };

});

Демонстрация: http://jsfiddle.net/BZq9c/1/

...