使用jQuery切换许多块中的一个

时间:2012-05-03 10:02:52

标签: jquery toggle slide

我有一些链接,应该像这样切换相应的div ......

    $('#link a').click(function() {
        $('#open').animate({width: 'toggle'});
      });

    $('#link2 a').click(function() {
        $('#open2').animate({width: 'toggle'});
      });

    $('#link3 a').click(function() {
        $('#open3').animate({width: 'toggle'});
      });

问题是如果你点击#link,然后点击#link2,BOTH框保持打开状态。

所有'#open'div共享同一个类,所以我使用了

$('#link1 a').click(function() {
        $('shared-class').hide();
        $('#open1').animate({width: 'toggle'});
      });

哪个确实有效,因为它看起来非常粗糙,因为隐藏不会滑入,如果我在课堂上使用了切换,它会混合出来的顺序,以及什么是syas,我不确定是否有只是一种在IF IT OUT中滑动一个元素的方法,希望这是有道理的,对于任何帮助都是非常有用的!

修改

http://jsfiddle.net/PEfHc/

基本上,如果我点击1,其他所有人都不应该显示

2 个答案:

答案 0 :(得分:1)

确实有更简单的方法来做这类事情,但无论如何:

$('a', '[id^="link"]').click(function(e) {
    e.preventDefault();
    var elm = $('#open'+$(e.target).parent().attr('id').replace('link', ''));
    $('[id^="open"]').not(elm).filter(':visible').animate({width: 'toggle'}, 1000);
    elm.animate({width: 'toggle'}, 1000);
});​

FIDDLE

答案 1 :(得分:1)

你可以这样做:

$('#link1 a').click(function(e) {
    e.preventDefault();
    $('.shared-class:visible').animate({width: 'toggle'});
    $('#open1').animate({width: 'toggle'});
});

,如this fiddle

无论如何,这个需要分解,只是出于演示目的。