Javascript 隐藏<;李>;当href为空时
我想在.社交菜单中隐藏任何具有空白HREF的LI 我最初有:Javascript 隐藏<;李>;当href为空时,javascript,jquery,html,hide,Javascript,Jquery,Html,Hide,我想在.社交菜单中隐藏任何具有空白HREF的LI 我最初有: $('ul.social-menu li a[href*=""]').hide(); 但它只隐藏了链接 我想也许我可以用: $('ul.social-menu li a[href*=""]').addClass('hidden') 但它并没有添加隐藏的类 HTML是: <ul class="social-menu"> <li class="facebook"><a target="parent"
$('ul.social-menu li a[href*=""]').hide();
但它只隐藏了链接
我想也许我可以用:
$('ul.social-menu li a[href*=""]').addClass('hidden')
但它并没有添加隐藏的类
HTML是:
<ul class="social-menu">
<li class="facebook"><a target="parent" href=""></a></li>
<li class="twitter"><a target="parent" href="http://twitter.com/#!/dft_au">Twitter</a></li>
</ul>
这项工作:
$('ul.social-menu li').has('a[href=""]').hide();
我编译了这个小程序来说明您的场景。您正在使用“contains”选择器(*=),这意味着它正在查找一个不包含任何内容的href。只需使用“=”使用或选择包含锚定的所有
元素(尽管:has()),即可显式测试空href
的可读性稍高。作为.has的替代品
/:has
在我的选项中更简单、更有效的是.parent()
(或者最近的(“li”)
,如果li
不是链接的直接父链接):
$('ul.social-menu li:has(a[href=""])').hide();
(也不要忘记使用href=“”
而不是href*=”
)
编辑:效率更高:
这将仅隐藏
。而不是
查看我的答案。您需要使用has
选择器。您的选择器仅隐藏
锚定。性能似乎取决于浏览器。我的Chrome 18执行:has
选择器的速度更快。@RoToRa它还取决于DOM结构。我的m在我的测试用例中使用的可能与OP使用的不同,这可能会影响结果。它看起来要快得多!
$('ul.social-menu li:has(a[href=""])').hide();
$('ul.social-menu li a[href=""]').parent().hide();
listItems = $('ul li a');
$.each(listItems, function() {
if($(this).attr('href') == '') {
$(this).parent().remove();
}
});