【问题标题】:show/hide one DIV at a time, changing link style [closed]一次显示/隐藏一个 DIV,更改链接样式 [关闭]
【发布时间】:2013-02-03 04:58:21
【问题描述】:

我有一段时间试图找到我需要的东西,并检查了很多链接@stackoverflow、@google 等,但每次都无法 100% 工作

所以问题在于制作显示/隐藏 DIV,其中一次只能打开一个 + 可以在按下相同链接时关闭,活动 DIV 链接应该改变它的样式。

最了解的一个是: http://dimdajdeneg.com/temp/menu.html 但它不会改变“显示 DIV”链接样式并且您不能关闭所有 DIV,例如如果第一个是打开的,再次单击它不会关闭打开的一个。

这个也很有意思:http://dimdajdeneg.com/temp/menu2.html 它甚至会自行关闭,但“显示 DIV”链接样式不可更改

我知道这很简单,但可能只是因为星期一 :) 谁能帮帮我?

提前谢谢你!

【问题讨论】:

标签: jquery css html styles


【解决方案1】:

这是我想出的,它会淡出所有内容,除了点击的那个(在.not() 内),它会被切换。

HTML:

<a href="" data-id="d1">Link 1</a>
<a href="" data-id="d2">Link 1</a>
<a href="" data-id="d3">Link 1</a>
<div id="d1">Div 1</div>
<div id="d2">Div 2</div>
<div id="d3">Div 3</div>

CSS:

a {
    background:blue;
    color:red;
}
.active {
    background:green;
    color:white;
}
div{
    display:none;
}

jQuery:

$('a').click(function(ev){
    ev.preventDefault();
    var id = $(this).data('id');
    $('a').not($(this).toggleClass('active')).removeClass('active');

    // parallel fading:      
    $('div').not($('#'+id).fadeToggle(500)).fadeOut(500);
    // OR
    // sequential fading:
    $.when($('div').not($('#'+id)).fadeOut(500)).done(function(){
        $('#'+id).fadeToggle(500)
    });
});

jsFiddle:

http://jsfiddle.net/fKGc5/

【讨论】:

  • 谢谢,这就像我需要的 99%,任何机会让它像这样工作,首先它消失,然后另一个 DIV 淡出?因为它的工作原理就像,当您选择要显示的另一个 DIV 时,您会看到两个 fos 吗?
  • @AleksandrSubots 当然,我添加了一个顺序衰减块。不过这有点不同。
  • Works gr8,最后的愿望,任何机会将 A 标签更改为 DIV,并在里面添加链接 + 为其添加默认类,有点不活动,所以点击它,它会得到新类,关闭它,会恢复默认吗?
  • @AleksandrSubots 你可以给 A 添加一个类或使用默认 css 样式 A 然后用 active 更改它?还是我错过了什么?我更新了CSS。如果要更改父 div 的类,只需将 removeClass 内容更改为: $('a').closest('div').not($(this).closest('div').toggleClass('active ')).removeClass('active');例如。
  • 问题是我无法正确设置链接的类,我正在向 DIV 添加 A 链接并且它们停止显示,添加了类:jsfiddle.net/fKGc5/1
【解决方案2】:

如果我正确理解了您的问题..

将此添加到您的 .click() 事件中:

$('#linkwrapper > a').each(function () { 

$(this).removeClass("isActive");

});

$(this).addClass("isActive");

显然,isActive 类需要 CSS!

【讨论】:

    【解决方案3】:

    我已经尝试了链接中的编码:http://dimdajdeneg.com/temp/menu.html

    并修改该代码如下...

    function m_slide(m_inactive) {$('.m_box').each(function(index) {
      if ($(this).attr("id") == m_inactive) {
                $(this).toggle("fast");
            }
        else {
                $(this).slideUp(300);
        }
    });}
    

    尽管有 Slide-downi have usedtoggle()`;

    试试这个小提琴:http://jsfiddle.net/RYh7U/92/

    【讨论】:

    • 谢谢!但仍然存在同样的问题:您可以打开多个 DIV + 活动链接不可更改... :(
    • @AleksandrSubots :我已经更新了我的代码,现在试试小提琴...jsfiddle.net/RYh7U/92
    • 是的,但仍处于活动状态的链接“显示 DIV”栏在活动时不可更改:(
    • @AleksandrSubots:你试过这个小提琴吗:jsfiddle.net/RYh7U/92 only...?
    • 是的,点击DIV“显示DIV”链接,它的样式和它一样吗?
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2015-07-21
    • 2015-01-16
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多