2012-01-08 82 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>項目,即使他們不直接孩子的!

相關問題