JQuery: скрыть якорь, если href пуст
На этот раз на какое-то время. В принципе, мне нужно проверить, где href
в теге привязки с классом .pdf-download
пусто, а если оно есть, скройте его.
Я попытался несколько вариантов, но не повезло. Это то, что я до сих пор:
$("a.pdf-download").each(function (i) {
if ($('[href]:empty',this).length == 1) {
$(this).hide();
} else {
$(this).show();
}
});
Ответы
Ответ 1
if ($(this).attr('href') != '') {
$(this).hide();
} else {
$(this).show();
}
Обратите внимание, что вы также можете сделать это в css с помощью селекторов атрибутов:
a.pdf-download[href='']{
display:none;
}
Однако это не поддерживается в ie6.
Ответ 2
Вы также можете сделать это с помощью селектора jQuery следующим образом:
// Hide any links with blank href or no href attribute
$('a.pdf-download[href=], a.pdf-download:not([href])').hide();
Ответ 3
Используйте это решение. он также даст желаемые результаты, если атрибут href
не определен. Если вы используете селектор CSS (JQuery), несуществующие атрибуты href
не будут обнаружены.
$("a.pdf-download").each(function (i) {
if (!this.href) {
$(this).hide();
} else {
$(this).show();
}
})
Не нужно использовать метод JQuery для получения атрибута href
, потому что this.href
читается, быстрее и также поддерживается повсеместно.
Ответ 4
Что-то вроде этой работы?
$("a.pdf-download").each(function (i) {
if ($(this).attr('href').length == 0) {
$(this).hide();
} else {
$(this).show();
}
});
Ответ 5
$(function() {
$('a').each(function() {
(!$(this).attr('href')) ? $(this).hide() : $(this).show();
});
});
Всемогущее демо: http://jsfiddle.net/each/j9DGw/
Ответ 6
$("a.pdf-download").each(function() {
var href = $(this).attr("href");
if(href == '') {
$(this).remove();
}
});
или
$("a.pdf-download[href='']").remove()
Ответ 7
Я сам начинаю jquery, но вот как я это сделаю:
$("a.pdf-download").each(function (i) {
var aHref = $(this).attr('href');
if (aHref == '' || !aHref) {
$(this).hide();
};
});
Демо: http://jsfiddle.net/BZq9c/1/