如何在jquery中检查空attr()?
我有几个div是用PHP创建的。div中的锚点始终有一个HREF,即使它是空的。基本上,我试图检测HREF是否为空。如果它有内容,什么也不做,如果它是空的,去掉文本,删除锚,他们把文本放回 这是分区:如何在jquery中检查空attr()?,jquery,each,attr,Jquery,Each,Attr,我有几个div是用PHP创建的。div中的锚点始终有一个HREF,即使它是空的。基本上,我试图检测HREF是否为空。如果它有内容,什么也不做,如果它是空的,去掉文本,删除锚,他们把文本放回 这是分区: <div class="title"> <a class="article" href="">Lorem Ipsum</a> </div> 您可以检查是否存在空的href属性,并使用以下方法“展开”这些链接: $(".article[
<div class="title">
<a class="article" href="">Lorem Ipsum</a>
</div>
您可以检查是否存在空的
href
属性,并使用以下方法“展开”这些链接:
$(".article[href='']").replaceWith(function() { return this.innerHTML; });
.您可以简单地将属性作为布尔值进行测试,而不是针对未定义的
进行测试:
if ($(this).attr('href')) {
// href is not blank
} else {
// href is blank
}
要简单地删除“href”属性,请执行以下操作:
$("#myLink[href='']").removeAttr('href');
$("#myDiv td, a, p, table, nav, header[style='']").removeAttr('style');
对于多目标,例如“样式”属性:
$("#myLink[href='']").removeAttr('href');
$("#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');
}
})
html中的文章在哪里我的错误我看到它这个。href
更容易;)这不只是检查是否有href attr(),而不是它是否为空吗?@Nick我有时会忘记jQuery下面有一个古老的“JavaScript”东西:p@Jared否,它将返回属性的值,如果属性不存在,则返回未定义的值。在JavaScript中,”
(空字符串)等效于布尔值false<如果属性不存在或为空,则code>attr()
将计算为false
。请注意,如果href不存在,IE8也将返回空字符串。if表达式仍然有效,但确实在IE上尝试href=“”和no href作为等效项。我喜欢这样做,即不需要在链接中使用条件branchIt,但当我将其放入代码中时,我得到一个未捕获的语法错误:意外标记非法
@Jared-听起来你复制了一些奇怪的ascii字符,看起来像是一个空格…尝试删除你复制的任何东西周围的空格。我将其复制/粘贴到记事本中以尝试清除非法字符,现在似乎可以工作了,谢谢!。但是我不确定我是否理解为什么这个代码可以工作?replaceWith()是否具有自动检查属性的功能,如果找不到任何属性,它将执行其功能?@Jared-检查空属性的是href
,那么.replaceWith()
只在这些锚上工作,有意义吗?