2011-06-16 60 views
0

我想检查一个元素是否在其中没有hrefs(即它是空的),如果是,就隐藏与它关联的标签。页面上会有几个元素需要检查,如果它们是空的,所以我需要编写一个循环。我需要帮忙写循环。这里是我的代码到目前为止:用JQUERY写一个循环

if(jQuery('span.tags').is(':empty')) { 
     jQuery('span.label').hide()   
    }; 

请有人可以帮我这个代码?

这是我的HTML

<div class="entry-meta"> 
      <span class="label">Tagged:</span> 
      <span class="tags"> 
      <a href="#" rel="tag">Career change</a>, 
      <a href="#" rel="tag">career change e course</a>, 
      <a href="#" rel="tag">career help</a> 
      </span> 
    </div><!-- END .entry-meta --> 

谢谢大家谁回答了这个帖子。这是有效的解决方案。

//Removes word 'Tagged:' if there are no tags 
jQuery('span.tags:empty').prev('span.label').hide(); 
+3

你能告诉我们你会使用这个代码一些HTML。 – 2011-06-16 09:45:57

+0

[如何在jQuery中执行“For”循环?](http://stackoverflow.com/questions/5287669/how-to-perform-a-for-loop-in-jquery) – 2011-06-16 09:46:26

+0

for the loop ,请检查jQuery中的.each方法 – Locksfree 2011-06-16 09:48:10

回答

1

您可以通过DOM元素使用eachfunction循环,和隐藏各一个。

$('span.tags:empty').each(function(i, value) { 
    $('span.label').hide(); 
}); 
+0

谢谢,乔希,我试过了,但它删除了span.label,即使它们不是空的。 – madameFerry 2011-06-16 09:59:15

+0

查看我的回答@madameFerry – Alex 2011-06-16 10:04:24

+0

@madame:因为'$('span.label')'选择每个'span.label'元素。见@ richardneililagan的答案。 – 2011-06-16 10:06:20

1

基于您的HTML,即使不抛出显式循环,您也应该能够关闭此功能。

// something like 
$('span.tags').not(':has(a[href])') 
       .prev('span.label') 
       .hide() 
       ; 
+0

谢谢理查德,但这不起作用。即使元素为空,我仍然可以看到Tagged:标签。 – madameFerry 2011-06-16 10:14:02

+0

你记得把你的jQuery代码放在'$(document).ready()'处理程序中吗?最糟糕的是 – 2011-06-16 12:38:59

+0

。性能。码。 EVER! – 2017-05-22 21:29:07

0

你不应该需要一个循环。基于这样的假设:如果没有标签的tags跨度将是空的,这将做到这一点:

$('span.tags:empty').prev('span.label').hide(); 

Demo on jsfiddle

+0

简单,整洁,快速。 – 2017-05-22 21:30:28