2010-07-17 88 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

相关问题