ID應該只有一個每頁。
您不應該重複使用「main」。
相反,做這樣的事情:
<div class="main">
<div class="link">click</div><!--/*div*/-->
<div class="box">content1</div><!--/*div*/-->
</div><!--/*div*/-->
<div class="main">
<div class="link">click2</div><!--/*div*/-->
<div class="box">content2</div><!--/*div*/-->
</div><!--/*div*/-->
<div class="main">
<div class="link">click3</div><!--/*div*/-->
<div class="box">content3</div><!--/*div*/-->
</div><!--/*div*/-->
然後,你會改變你的JavaScript像這樣:
$(document).ready(function(){
$('.main .box').css('display', 'none')
$('.main .link').click(function() {
$(this).next('.box').slideToggle('slow')
.siblings('.box:visible').css('display', 'none');
});
});
記住,你對付.box
的兄弟姐妹,所以你不需要再指定.main。你基本上是在尋找名爲class='box:visible'
主要的兄弟姐妹我可能會建議,除非你確實需要,否則你可能不需要main
類。相反,結構代碼如下所示:
<div id='main'>
<div>
<div class="link">click</div><!--/*div*/-->
<div class="box">content1</div><!--/*div*/-->
</div>
<div>
<div class="link">click2</div><!--/*div*/-->
<div class="box">content2</div><!--/*div*/-->
</div>
<div>
<div class="link">click3</div><!--/*div*/-->
<div class="box">content3</div><!--/*div*/-->
</div>
</div>
然後,你的JavaScript(編輯),像這樣:
$(document).ready(function(){
$('#main .box').css('display', 'none')
$('#main .link').click(function() {
// this will work, but the code below is smoother
// $('#main .box').css('display', 'none');
$('#main .box').hide('slow'); // hide smoothly
$(this).next('.box').slideToggle('slow');
});
});
這樣做的原因有兩方面。其中,ID在DOM中查找速度更快,併爲文檔提供結構。由於您不應重複使用ID,因此您的網頁上只能有一個主要元素。
但是,如果沒有看到代碼的其餘部分,我不能保證這會工作(或中斷)您的佈局。
非常感謝,這是有道理的。 爲什麼如果我在http://jsfiddle.net/中測試不起作用? – Mango 2010-05-07 14:32:28
我現在編輯了JS,看到你正在嘗試做什麼。 – Armstrongest 2010-05-07 14:54:07