2011-11-11 135 views
1

这是我的脚本,我使用切换,所以我可以动画一个滑动菜单。jquery切换使用2个元素

$("div.show-menu").click().toggle(
     function() { 
      // first alternation 
      $("#slideover").animate({ 
       right: "512px" 
       }, 300); 
      $(".menu-button").html('close menu'); 


     }, function() { 
      // second alternation 
      $("#slideover").animate({ 
       right: "0" 
       }, 300); 
      $(".menu-button").html('open menu'); 

    }); 

虽然我真的需要使用页面上的2个元素的切换工作。例如见下文......

<div class="show-menu one">open menu</div> // this is element one 

<div class="show-menu two">open menu</div> // this is element two 

我需要它,这样,如果一个元素获得的点击第一个,你可以使用元素两个在第一次点击关闭菜单。现在发生的事情是,你必须点击元素两次,才能关闭菜单 - 反之亦然

我想这是切换进行中,任何帮助将非常感谢。

干杯 乔希

+0

所以你的说法。如果显示元素1,则如果单击第二个菜单,则会关闭第一个元素,然后触发第二个元素显示,反之亦然 –

+0

'.toggle'只接受一个回调函数,而不是两个:http://api.jquery .com/toggle/ – Blazemonger

回答

1
$('.show-menu').on('click', function() { 

    //check the state of the .menu-button, if it's closed then run the open animation, if it's open then run the close animation 
    if ($(".menu-button").html() == 'close menu') { 
     $("#slideover").animate({ 
      right: "0" 
     }, 300); 
     $(".menu-button").html('open menu'); 
    } else { 
     $("#slideover").animate({ 
      right: "512px" 
     }, 300); 
     $(".menu-button").html('close menu'); 
    } 
}); 

.on()在jQuery的1.7是新的,在这种情况下,替代.bind()如果你正在使用jQuery < 1.7然后使用.bind()

+0

这看起来很有希望,但我无法去工作 - 我试图获得它的jist,但可以让它运行任何动画。我写错了我的html,我想知道这是为什么。我的按钮实际上看起来像这样... '

//这是元素之一' ' //这是元素之二' – Joshc

+0

对不起,它又错了。 '

//这是元素one' ' //这是元素two' – Joshc

+0

它的工作 - 我还没有更新到1.7.0的jQuery - 万分感谢伙计! – Joshc

0

什么

$('.show-menu').on('click', function() { 
    if ($("#slideover").css("right") == '512px') { 
     $("#slideover").animate({ 
      right: "0" 
     }, 300); 
     $(".menu-button").html('open menu'); 

    } else { 
     $("#slideover").animate({ 
      right: "512px" 
     }, 300); 
     $(".menu-button").html('close menu'); 
    } 
}); 
+0

再次看起来很有前途,但根本不运行动画。我确实把错误的标签贴上了错误的标签 - 尽管我不确定这是否是问题,没有错误,只是没有点击动画而已。 '

//这是元素之一 //这是元素二' – Joshc

+0

我还没有更新到jquery-1.7 - 更新和上面的代码工作。但你的代码奇怪地没有?从逻辑上讲,我看不出为什么它没有。无论如何感谢兄弟 – Joshc