Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 一次将一个元素设置为';主动';_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 一次将一个元素设置为';主动';

Javascript 一次将一个元素设置为';主动';,javascript,jquery,html,css,Javascript,Jquery,Html,Css,对我来说,解释这个问题最简单的方法就是看我的代码 每个Div只有一个链接,单击该链接可将Div设置为活动+显示其中的隐藏Div。因此,当您再次单击链接时,它将切换活动样式并隐藏隐藏的Div。这是我想要的方式,但我也想要它,这样,如果我单击另一个链接,而上一个Div仍然设置为活动,它将仅将该Div(刚刚单击)设置为活动并切换上一个Div 我希望这是有意义的,如果你需要任何更多的信息让我知道 另外,如果你能找到一种更好的方法来编写这段代码,我希望你能给我一些建议 谢谢。在显示隐藏的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();
})