jQuery宽度切换将div移动到左侧

时间:2013-08-23 15:20:43

标签: jquery width toggle

我有这个脚本http://jsfiddle.net/Z8cuz/2/ 代码:

$('.list').hide();
$('.close').hide();
var widthVal = false;
$('#left').click(function () {
    if (widthVal == false) {
        $('#middle').hide('fade', 300);
        $('#right').hide('fade', 300, function () {
            $('#left').find('.list').show();
            $('#left').find('.close').show();
            $('#left').animate({
                width: "96%",
                opacity: 1
            }, 1000);
        });
        widthVal == true;
    }
});
$('#middle').click(function () {
    if (widthVal == false) {
        $('#left').hide('fade', 300);
        $('#right').hide('fade', 300, function () {
            $('#middle').find('.list').show();
            $('#middle').find('.close').show();
            $('#middle').animate({
                width: "96%",
                opacity: 1
            }, 1000);
        });
        widthVal == true;
    }
});
$('#right').click(function () {
    if (widthVal == false) {
        $('#left').hide('fade', 300);
        $('#middle').hide('fade', 300, function () {
            $('#right').find('.list').show();
            $('#right').find('.close').show();
            $('#right').animate({
                width: "96%",
                opacity: 1
            }, 1000);
        });
        widthVal == true;
    }
});
$('.close').click(function (e) {
    e.stopPropagation();
    $(this).parent().animate({
        width: "30%",
        opacity: 1
    }, 1500, function(){
    widthVal == false;
    $('#left').show('fade', 600);
    $('#middle').show('fade',600);
    $('#right').show('fade', 600);
    $('.list').hide();
    $('.close').hide();
    });
});

当我点击左框时,它可以正常工作,但是当我点击中间或右边的那个时,它向左移动,然后改变它的宽度。我希望它保持位置并改变宽度。

2 个答案:

答案 0 :(得分:1)

使用此功能,问题将解决

function sorted(obj){
  var clonedObj = obj.clone();
  obj.remove();
  $('#container').prepend(clonedObj);
}

这里是live example

答案 1 :(得分:0)

作为一种选择,您可以减少侧面的宽度。检查代码我只为#middle div创建一个小提琴,给你一个想法。 http://jsfiddle.net/7a7n2/ 我做了中间的一个例子。

$('#middle').click(function () {
        if (widthVal == false) {
            $('#left').animate({opacity:'0'},300);
            $('#left').animate({width:'0'},1000);
            $('#right').hide('fade', 300, function () {

                $('#middle').find('.list').show();
                $('#middle').find('.close').show();
                $('#middle').animate({
                    width: "96%",
                    opacity: 1
                }, 1000);
            });
            widthVal == true;
        }
    });