我想我可能知道問題是什麼(有列表標記會有幫助)。
你隱藏所有父列表元素的兒童,這將「隱藏」的父元素,因爲它沒有任何顯示:
<div>
<ul id="home">
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
$(document).ready(function(){
$('#home').hover(
function() {
$(this).children().stop().show();
},
function() {
$(this).children().stop().hide();
console.log(this);
}
);
});
http://jsfiddle.net/sK36C/2/
使用Chrome的控制檯或Firefox中的Firebug在隱藏後查看該元素的HTML選項卡,並且您會注意到UL#home
的每個LI
都是display: none
。在UL
中沒有任何顯示,所以它出現已經消失。
這裏的另一個示範,我告訴它跳過:first
兒童和隱藏休息:
<div>
<ul id="home">
<li>This is #home text</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
$(document).ready(function(){
$('#home').hover(
function() {
$(this).children(':not(:first)').stop().show();
},
function() {
$(this).children(':not(:first)').stop().hide();
console.log(this);
}
);
});
http://jsfiddle.net/sK36C/3/
注意如何第一個元素是不是隱藏,並且UL#home
仍清晰可見。
參見:http://api.jquery.com/children/
你爲什麼不只是把所有的孩子一個div?簡單得多$'('#home_children')。show();' –