下面的代碼將顯示/隱藏點擊div。它適用於上市的第一個分區,但不適用於其他任何分區。有沒有辦法讓函數適用於所有具有相同類名的元素?當然,它應該只打開/關閉它所應用的div(例如,點擊Second Div切換按鈕應該只打開/關閉Second Div,而不打其他)。將jquery函數應用於多個div?
// this is the markup
<div class="collapsible-item">
<div class="collapsible-item-title">
<div class="item-title-header"> First Div</div>
<img src="/images/expand.png" alt="Expand this section" class="toggle-button">
</div>
</div>
<div style="display: none;" class="togglethis">
Cras cursus sodales odio, quis consectetur felis ultricies in.
</div>
</div>
<div class="separator"></div>
<div class="collapsible-item">
<div class="collapsible-item-title">
<div class="item-title-header"> Second Div</div>
<img src="/images/expand.png" alt="Expand this section" class="toggle-button">
</div>
</div>
<div style="display: none;" class="togglethis">
Cras cursus sodales odio, quis consectetur felis ultricies in.
</div>
</div>
<div class="separator"></div>
<div class="collapsible-item">
<div class="collapsible-item-title">
<div class="item-title-header"> Third Div</div>
<img src="/images/expand.png" alt="Expand this section" class="toggle-button">
</div>
</div>
<div style="display: none;" class="togglethis">
Cras cursus sodales odio, quis consectetur felis ultricies in.
</div>
</div>
而且,這是jQuery:
$(document).ready(function() {
$('.toggle-button').toggle(
function() {
$(this).attr('src', '/images/collapse.png');
$(this).parent().siblings('.togglethis').slideToggle('slow');
},
function() {
$(this).attr('src', '/images/expand.png');
$(this).parent().siblings('.togglethis').slideToggle('slow');
}
);
$('.item-title-header').toggle(
function() {
$('.toggle-button').attr('src', '/images/collapse.png');
$(this).parent().siblings('.togglethis').slideToggle('slow');
},
function() {
$('.toggle-button').attr('src', '/images/expand.png');
$(this).parent().siblings('.togglethis').slideToggle('slow');
}
);
});
Upvoted。我喜歡插件模式,絕對需要更頻繁地使用它。而且,是的,遍歷到可摺疊項目父項,而不是試圖找到直接父項的兄弟,避免了HTML中不匹配的問題。 – brianpeiris 2009-10-04 08:37:00