挑战:如果面板单击关闭不必要的幻灯片

时间:2013-05-31 07:42:31

标签: jquery menu

当我点击幻灯片时,我想让jQuery检查另一张幻灯片是否打开并关闭它。我写了90%的代码,但缺少一些东西。请参阅下面的HTML:

这是我的challenge

//first slide
$('#one').toggle(function(){
$('.content').animate({width:'42%'});
}, function(){ 
$('.content').animate({width:'0%'}); 
});

//second slide
$('#two').toggle(function(){
$('.content1').animate({width:'42%'});
}, function(){ 
$('.content1').animate({width:'0%'});
});

//the condition ,here is the chalenge
$(function(){
$('#two').click(function(){
var two = $('.content').innerWidth();
    //when the users click the second slide i want that jquery checks if another panel           is open(in my case .content) and close it :D
});


 });

4 个答案:

答案 0 :(得分:0)

你可以这样做:

$('#one').toggle(function(){
                    $(".content1").animate({width:'0%'});
                    $('.content').animate({width:'42%'});
                }, 
                function(){ 
                     $('.content').animate({width:'0%'});
                });

$('#two').toggle(function(){
                    $(".content").animate({width:'0%'});
                    $('.content1').animate({width:'42%'});
                 }, 
                 function(){
                     $('.content1').animate({width:'0%'});
                 });

答案 1 :(得分:0)

这应该可以解决问题......

为您的内容使用通用类,并添加一个使内容“唯一”的额外类

$('.one').toggle(function(){
  $('.content').stop().animate({{width:0});
  $('.content.one').stop().animate({width:'42%'});
}, function(){ 
  $('.content').animate({width:'0%'}); 
});

答案 2 :(得分:0)

你正在寻找这个吗?随着htmL的微小变化,你可以实现这个......

HTML:

<ul id="vertical">
    <li class="one"></li>
    <li class="content"></li>
    <li class="one"></li>
    <li class="content"></li>
</ul>

jQuery:

//first slide
$('.one').toggle(function () {
    $(this).next().animate({
        width: '42%'
    });
    $(this).next().siblings('.content').not($(this).next()).animate({
        width: '0%'
    });
}, function () {
    $(this).next().animate({
        width: '0%'
    });
    $(this).next().siblings('.content').not($(this).next()).animate({
        width: '0%'
    });
});

http://jsfiddle.net/writetobhuwan/DDSu2/1/

答案 3 :(得分:0)

我建议将功能与样式分开并使用通用解决方案,因此您可以通过添加第三张幻灯片来扩展它。

HTML:

<ul id="vertical">
   <li class="js_slide"></li>
   <li class="content js_content"></li>
   <li class="js_slide"></li>
   <li class="content js_content"></li>
</ul>

JS:

$(".js_slide").click( function() {
    var $contentBlock = $(this).next(".js_content");

    if ( $contentBlock.hasClass("is_open") ) {
        $contentBlock.animate({width:'0%'}).removeClass("is_open");
    } else {
        // if a content box is open (=> an element with the class .is_open exists), close it
        $(".js_content.is_open").animate({width:'0%'}).removeClass("is_open");
        $contentBlock.animate({width:'42%'}).addClass("is_open");
    }

});

请参阅:http://jsfiddle.net/rdequ/3/