2017-02-22 73 views
0

我想在wordpress网站上做到这一点。我已经搜索并尝试了一些已发布的建议,但都没有成功。WordPress的&jQuery的:如果跨度为零隐藏父div

我想隐藏跨度,如果它包含零页面加载时。

我已经使用了下面的代码(放在头部),但它不会隐藏范围。

<script type="text/javascript"> 
(function ($) { 
var propertydata = $('span.property-data'); 
if (propertydata.text().trim() === '0') { 
    propertydata.closest('span.propertydata').hide(); 
} 
}); 
</script> 

这里是我试图隐藏的HTML:

<div id="dbst-show12" class="column rows other"> 
    Year Built : 
    <span class="property-data">0</span> 
</div> 

最终我很想隐藏父“列”如果可能的话,但如果我可以得到零消失会解决。

+0

您需要传递jQuery对象:'(function($){...})(jQuery);'这样,函数中的'$'指的是传入的'jQuery'。当你隐藏它时,你在'span.property-data'中忽略了短划线。 –

回答

0

您可以使用一个jQuery选择器选择全0这样的范围内:

var selecton = $("span:contains(0)"); 

然后你就可以隐藏所有与jQuery的.hide元素()方法:

selection.hide(); 

您还需要确保该函数包含在$(document).ready中,以便浏览器在加载页面后就知道它可以运行您的函数。

这将是整个片段:

$(document).ready(function(){ 
var selection = $("span:contains(0)"); 
selection.hide(); 
}); 

这里有一个链接到的jsfiddle你定的代码:https://jsfiddle.net/kgill/uzpqdsoj/1/

你可以同样用一个jQuery选择器选择一个DIV整列隐藏和以同样的方式隐藏它。

0

的问题是这样做的:

var propertydata = $('span.property-data'); 

proertydata从所有的跨度文本让所有的值,所以它永远不会等于0

您可能需要做这种方式:

<script type="text/javascript"> 
(function ($) { 
    jQuery.each($('span.property-data'), function(i, val) { 
     if ($(val).text().trim() === '0') { 
      $(val).hide(); //hides only the span 
      $(val).parent().hide(); //if you want to hide parent div also 
     } 
    }); 
})(jQuery); 
</script> 

这里有一个的jsfiddle: https://jsfiddle.net/bv7u4hxb/1/

+0

感谢您的回复。 –

+0

我认为这将工作,但我不断收到错误:ReferenceError:jQuery没有定义 –

+0

对不起,如果以前是一个愚蠢的问题,我不熟悉JavaScript。 –