web-dev-qa-db-ja.com

JQuery:hrefが空の場合はアンカーを非表示

しばらくこれをやっています。基本的に、クラス.pdf-downloadのアンカータグのhrefが空であるかどうかを確認し、空の場合は非表示にする必要があります。

私はいくつかのオプションを試しましたが、運がありませんでした。これは私がこれまでに持っているものです:

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

属性セレクター を使用してcssでこれを行うこともできることに注意してください:

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

ただし、これはie6ではサポートされていません。

24
amosrivera

次のように、jQueryセレクターを使用してこれを行うこともできます。

// Hide any links with blank href or no href attribute
$('a.pdf-download[href=], a.pdf-download:not([href])').hide();
6
Elliot Nelson

このソリューションを使用してください。また、href属性が定義されていない場合でも、望ましい結果が得られます。 CSSセレクター(JQuery)を使用する場合、存在しないhref属性は検出されません。

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

href属性を取得するためにJQueryメソッドを使用する必要はありません。なぜなら、this.hrefも同様に読みやすく、高速で、普遍的にサポートされています。

4
Rob W

このようなものは機能しますか?

$("a.pdf-download").each(function (i) {
  if ($(this).attr('href').length == 0) { 
    $(this).hide();
  } else {
    $(this).show();
  }
});
3
Matt
$("a.pdf-download").each(function() {
    var href = $(this).attr("href");
    if(href == '') {
        $(this).remove();
    }
});

または

$("a.pdf-download[href='']").remove() 
1
David Houde
$(function() {

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

});

全能のデモ: http://jsfiddle.net/each/j9DGw/

1
daryl

私自身はjqueryの初心者ですが、それが私のやり方です。

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

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

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

        $(this).hide();

    };

});

デモ: http://jsfiddle.net/BZq9c/1/

0
r0skar