2010-07-17 90 views
0

所以我試圖在jQuery中實現一些看似非常基本的東西。我有一些「標題」,當我點擊一個標題時,我想讓該標題下面的信息向下滑動,並且所有其他標題信息向上滑動(這樣一次只有一個標題顯示信息)。如何切換除點擊之外的每個jQuery元素?

這裏是什麼,我希望發生的須藤代碼:

$('.more-info-header:not(.jquery-processed)').addClass('jquery-processed').click(function(e) { 
    $(this).children('.game-info-text').slideToggle("Slow"); 
    [all other ('.game-info-text')].slideUp(fast) 
}); 

對於我的生活,雖然,我無法弄清楚如何代碼,第二行([其他所有(」。遊戲-信息-文本')])。任何幫助深表感謝!

(我實現這個作爲一個Drupal的行爲,這就是爲什麼我添加的 「jQuery的處理」 級)

回答

3

喜歡的東西:

$('.more-info-header:not(.jquery-processed)').addClass('jquery-processed').click(function(e) { 
    $(this).children('.game-info-text').slideToggle("Slow"); 
    $('.more-info-header').not(this).children('.game-info-text').slideUp(fast); 
    //      ^-- removes the clicked element from all `.more-info-header` 
}); 

參考:.not()

+0

謝謝,作品像一個魅力。 – 2010-07-17 14:48:23

1

聽起來像是在jQuery UI Accordion插件之後。

+0

感謝Chris的參考。我會研究這個...... Accordion插件可以定製很多,可以使用圖像標題和什麼? – 2010-07-17 14:50:49

+0

所有的jQuery UI插件都具有高度的換膚功能。如果您查看演示頁面的右上角,則會看到「主題」的下拉菜單。你可以使用plain ol'CSS爲任何jQuery插件定義你自己的主題。他們甚至有一個滾動自己的主題生成器,使最初的修補工作更容易一些:http://jqueryui.com/themeroller/ – Chris 2010-07-17 16:03:39

1
$('.more-info-header:not(.jquery-processed)') 
.addClass('jquery-processed').click(function(e) { 
    var these = $(this).children('.game-info-text').slideToggle("slow"); 
    $('.game-info-text').not(these).slideUp("fast"); 
}); 

使用not()函數可以排除已經選擇的元素。

+0

感謝您的答案 - 我真的很感激它! – 2010-07-17 14:49:35

1

是否這樣?

$('.more-info-header').click(function(e){ 
    var target = e.target || e.srcElement; 
    $(this).children().not(target).find('.game-info-text').slideUp('fast'); 
    $('.game-info-text', target).slideToggle("slow"); 
    }); 
+0

感謝您的回答麥克風! – 2010-07-17 14:48:45