2012-01-08 100 views
0

如果没有无序列表项目,我无法提供一个jQuery脚本,它可以将div的所有内容。因此,如果div内有无序列表项,则div将被显示,否则它将被隐藏。如果没有无序列表项目,jQuery将隐藏DIV

这里是基本的HTML我一定要考这样的:

<html> 
<title>Experiment Fix Div Hidding</title 
<head> 

<link rel="stylesheet" type="text/css" href="css/css.css" media="all"/> 
<script src="js/jquery-1.7.1.min.js"></script> 
<script type="text/javascript" src="js/scripts.js"></script> 

</head> 

<body> 

<table> 

<tr> 
<td> 
<div id="contenFirst">Sample Content. Not display if not bullets points exists 
<ul> 
<li><a href="#">Hello world</a></li> 
<li><a href="#">Hello world2</a></li></ul></div> 
</td> 
</tr> 

</table> 

</body> 
</html> 

这里是剧本我已经想出这么远,但它似乎并没有做的工作:

$(document).ready(function(){ 

// hiding a div based on it not having any content (unordered list items) 
if($("#contentFirst").html().length == 0){ 
$("#contentFirst").hide(); 
} 
}); 

我正在用jquery脚本正确的方式,没有用jquery做过多的事情。

任何建议将不胜感激。

if($("#contentFirst ul").length == 0){ 

此外,如果你想简单地隐藏自己的div,如果它不具有UL,你可以做到以下几点::

回答

3

试试这个:

$(document).ready(function() { 
    $('#contentFirst').hide(); 
    $('#contentFirst').has('ul').show(); 
}); 
+0

谢谢安德鲁这个伎俩。感谢所有您的建议,所有有用的地方。 – 2012-01-08 23:51:16

1

,如果你的DIV没有任何无序列表这将返回true

$("#contentFirst:not(:has(ul))").hide(); 
2

首先,它看起来像你可能有一个错字:)

<div id="contenFirst">Sample Content. Not display if not bullets points exists 
<ul> 

您的contentFirst缺少“t”。

其次,要算<li>列表项,但contentFirst直接子是<ul>这永远不会消失,所以contentFirst总会有内容。

你可以这样做:

if($("#contentFirst").find("li").length === 0){ 
    $("#contentFirst").hide(); 
} 

find()将返回所有<li>项目,即使他们不直接孩子的!