如何检查jquery中的空attr()?

时间:2010-09-22 20:09:32

标签: jquery each attr

我有一些使用PHP创建的div。 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 个答案:

答案 0 :(得分:15)

您可以使用.replaceWith()检查空href属性并“解包”这些链接,如下所示:

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

You can give it a try here

答案 1 :(得分:15)

您可以简单地将属性测试为布尔值,而不是针对undefined测试它:

if ($(this).attr('href')) {
  // href is not blank
} else {
  // href is blank
}

答案 2 :(得分:1)

简单地摆脱'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'); 
} 
})