Javascript jQuery not:(这)排除类中的所有内容,但前一个函数中调用的除外

Javascript jQuery not:(这)排除类中的所有内容,但前一个函数中调用的除外,javascript,jquery,this,slidetoggle,Javascript,Jquery,This,Slidetoggle,大家好, 我有一些隐藏的div,通过一个动态的slideToggle函数显示。一切都很好,但是当你点击其他链接时,div会显示出来。我想一次放映一个div。单击将隐藏其他项并显示新项。似乎我永远都无法正确地获得完整的功能 谢谢你抽出时间!我非常感激。只是个小宝宝 HTML: 我想要的内容的概念性Javascript已损坏: $('#work, #biography, #contact').hide(); $('#nav .menu').click(function() { $(this)

大家好, 我有一些隐藏的div,通过一个动态的slideToggle函数显示。一切都很好,但是当你点击其他链接时,div会显示出来。我想一次放映一个div。单击将隐藏其他项并显示新项。似乎我永远都无法正确地获得完整的功能

谢谢你抽出时间!我非常感激。只是个小宝宝

HTML:

我想要的内容的概念性Javascript已损坏:

$('#work, #biography, #contact').hide();
$('#nav .menu').click(function() {
    $(this).slideToggle(400);
    $('.sub not:(this)').slideUp(400);
});
return false;
});.next().hide();

我只需编写一个函数,在单击时隐藏所有div:

function hideDivs() {
  $(".menu div").hide();
}
然后,您的单击如下所示:

$('#show_work').click(function() {
    hideDivs();
    $('#work').slideToggle(400);
});

$('#show_biography').click(function() {
    hideDivs();
    $('#biography').slideToggle(400);
});

$('#show_contact').click(function() {
    hideDivs();
    $('#contact').slideToggle(400);
});
这是通过隐藏所有div来实现的,不管单击了什么链接。您可以手动隐藏非目标div(如下所示),但我认为将它们全部隐藏是一个好方法

备选方案(更难看、更不易维护-如果“show div”已经可见,还需要跳过slideToggle调用的逻辑):


看起来它能满足你的需求。

这就是你想要的吗

$('.sub').hide();
$('#nav .menu').click(function() {
    $('.sub:visible').not($(this).next()).slideUp(400);
    $(this).next().slideToggle(400);
    return false;
});

下面是一个观察它工作的例子。

似乎它会立即关闭打开的项目,然后逐渐打开新项目。看起来会有点奇怪。你不应该在滑动打开新项目的同时滑动关闭打开的项目吗?是的,你可以滑动而不是隐藏-这更多是关于概念而不是成品。这很有效,但有点笨重。我用一个简化的函数更新了我的问题。希望这有助于澄清我所期待的一切!我从来没见过。。不幸的是,它始终保留一个打开的分区(我想先关闭它们),并与我的布局冲突(隐藏分区不在相应链接的正下方)。我试着把它弄坏了。。但它不够光滑。还有一个奇怪的突出显示,手风琴控件有一个可折叠的选项,允许关闭所有部分。但如果它与你拥有的其他东西冲突,那就无法解决问题。
$('#show_work').click(function() {
    hideDivs();
    $('#work').slideToggle(400);
});

$('#show_biography').click(function() {
    hideDivs();
    $('#biography').slideToggle(400);
});

$('#show_contact').click(function() {
    hideDivs();
    $('#contact').slideToggle(400);
});
$('#show_work').click(function() {
    $('#show_biography, #show_contact').hide();
    $('#work').slideToggle(400);
});

$('#show_biography').click(function() {
    $('#show_work, #show_contact').hide();
    $('#biography').slideToggle(400);
});

$('#show_contact').click(function() {
    $('#show_work, #show_biography').hide();
    $('#contact').slideToggle(400);
});
$('.sub').hide();
$('#nav .menu').click(function() {
    $('.sub:visible').not($(this).next()).slideUp(400);
    $(this).next().slideToggle(400);
    return false;
});