对我来说,解释这个问题的最简单方法是查看我的代码at jsfiddle
每个Div只有一个链接,一旦单击该链接就会将Div设置为active +,并在其中显示一个隐藏的Div。因此,当您再次单击该链接时,它会切换活动样式并隐藏隐藏的Div。这就是我想要的方式,但我也希望这样,如果我单击另一个链接,而前一个div仍然设置为active,它只会将该Div (刚刚单击)设置为active,并切换到前一个div。
我希望这是有意义的,如果你需要更多的信息,请让我知道。
此外,如果您看到更好的方法来编写这一小段代码,我希望得到建议。
谢谢。
发布于 2011-06-18 16:22:43
如果你的标记保证了所有相关的div都是同级的,那么这是可行的(并且不使用任何ID或属性):
$('.href').click(function (ev){
ev.preventDefault();
// find enclosing div
var p = $(this).closest('div');
// make this one active, and make others inactive
$(p).addClass('active')
.siblings('.active').removeClass('active').find('.hidden').hide();
// and change the hidden div
$(p).find('.hidden').toggle();
})http://jsfiddle.net/alnitak/y8kys/
中间一行完成了繁重的工作-它确保外部div具有正确的类,它的同级都没有正确的类,并且每个同级中的隐藏元素也被隐藏。
我在http://jsfiddle.net/alnitak/ZfhbU/上放了另一个版本,当包含的div不是同级的时候,它就能工作。
发布于 2011-06-18 16:16:15
在显示隐藏的div之前,您可以检查所有其他隐藏的div元素,必要时将其隐藏,并在父div上切换样式
$('.hidden').each(function() {
if($(this).is(":visible")) {
$(this).hide("slow");
$(this).parent().toggleClass("active");
}
});有关示例,请参阅updated fiddle。
https://stackoverflow.com/questions/6394715
复制相似问题