Javascript 一次将一个元素设置为';主动';
对我来说,解释这个问题最简单的方法就是看我的代码 每个Div只有一个链接,单击该链接可将Div设置为活动+显示其中的隐藏Div。因此,当您再次单击链接时,它将切换活动样式并隐藏隐藏的Div。这是我想要的方式,但我也想要它,这样,如果我单击另一个链接,而上一个Div仍然设置为活动,它将仅将该Div(刚刚单击)设置为活动并切换上一个Div 我希望这是有意义的,如果你需要任何更多的信息让我知道 另外,如果你能找到一种更好的方法来编写这段代码,我希望你能给我一些建议Javascript 一次将一个元素设置为';主动';,javascript,jquery,html,css,Javascript,Jquery,Html,Css,对我来说,解释这个问题最简单的方法就是看我的代码 每个Div只有一个链接,单击该链接可将Div设置为活动+显示其中的隐藏Div。因此,当您再次单击链接时,它将切换活动样式并隐藏隐藏的Div。这是我想要的方式,但我也想要它,这样,如果我单击另一个链接,而上一个Div仍然设置为活动,它将仅将该Div(刚刚单击)设置为活动并切换上一个Div 我希望这是有意义的,如果你需要任何更多的信息让我知道 另外,如果你能找到一种更好的方法来编写这段代码,我希望你能给我一些建议 谢谢。在显示隐藏的div之前,您可以
谢谢。在显示隐藏的
div
之前,您可以检查所有其他隐藏的div
元素,必要时隐藏它们,并在父div
上切换样式:
$('.hidden').each(function() {
if($(this).is(":visible")) {
$(this).hide("slow");
$(this).parent().toggleClass("active");
}
});
请参见一个示例。如果您的标记保证所有相关div都是同级的,那么这是有效的(并且不使用任何id或属性): 中间线做了艰苦的工作——它确保外部div有正确的类,它的任何兄弟都没有,并且每个兄弟中隐藏的元素也被隐藏
我放了另一个版本,当包含的div不是兄弟时,该版本可以工作。感谢您的时间,我注意到,使用您拥有的代码,您必须单击链接4次才能将其恢复到原始状态。事实上,它确实。。。这里有一个更新的提琴:感谢您的时间,并感谢您提供了两组代码。我相信第一部分将完成所需的工作,因为标记的结构不会改变。再次感谢:)刚刚实现-为了获得最佳性能,请在
.sides()
调用中放置一个'.active'
选择器。它将避免对仍然处于非活动状态的同级进行不相关的更新。
$('.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();
})