Как проверить наличие пустого attr () в jquery? - PullRequest
10 голосов
/ 23 сентября 2010

У меня есть несколько div, которые созданы с использованием PHP.Якорь внутри div всегда имеет HREF, даже если он пустой.По сути, я пытаюсь определить, является ли HREF пустым.Если у него есть содержимое, ничего не делайте, если оно пустое, удалите текст, удалите привязку, а затем вставьте текст обратно.

Вот div:

<div class="title"> 
    <a class="article" href="">Lorem Ipsum</a> 
</div> 

Вотмой код:

jQuery(document).ready(function($) { //required for $ to work in Wordpress

    $(".article").each(function(){
        if ($(this).attr('href') !== undefined) {
            return;
        } else {
            var linkTitle = $(this).html();
            $(this).parent().empty().html(linkTitle);
        }                               
    });    
//-->
});

Ответы [ 3 ]

15 голосов
/ 23 сентября 2010

Вы можете просто протестировать атрибут как логическое значение вместо проверки его по undefined:

if ($(this).attr('href')) {
  // href is not blank
} else {
  // href is blank
}
15 голосов
/ 23 сентября 2010

Вы можете проверить наличие пустого атрибута href и «развернуть» эти ссылки, используя .replaceWith(), например:

$(".article[href='']").replaceWith(function() { return this.innerHTML; });

Вы можете попробовать здесь .

1 голос
/ 24 июня 2012

Чтобы просто избавиться от атрибута 'href':

$("#myLink[href='']").removeAttr('href');

Для множественного таргетинга, например, атрибут 'style':

$("#myDiv td, a, p, table, nav, header[style='']").removeAttr('style');

Таким образом, вы избавитесь от атрибута только тогда, когда он пуст, а не удаляете весь элемент целиком.

Пример полного кода:

$('#myDiv table, tr, td, a, p').each(function() { 
if ($(this).attr('style') == '') { 
    $(this).removeAttr('style'); 
} 
})
...