2015-03-25 41 views
1

我有切换一个div宽度的功能,因此具有“滑动”的appearence从屏幕的边界之外如何将jQuery的“切换”功能分解为独立的“显示”和“隐藏”功能?

$(".slider").animate({ 
    width: "toggle", 
}, 300, function() { 
}); 

有没有一种办法可以分成两个不同的功能,这,一个显示div和一个隐藏它?

因此,理想情况下,如果我已经显示div触发show函数,则不会发生任何事情,反之亦然。

我做了一个小提琴来说明我想要做什么:http://jsfiddle.net/2x816nmf/1/。所以在小提琴中的问题是.hide-slider.show-slider只是简单地切换宽度。 .hide-slider应该只有设置为.slider's宽度为0,.show-slider应该只有设置宽度为在CSS中定义的数量。如果我连续按两个按钮,就不会发生任何事情。

+0

请问您可以添加工作小提琴吗? – 2015-03-25 06:21:06

+0

请详细解释'break in 2 functions'的意思和预期行为 – charlietfl 2015-03-25 11:58:46

+0

@charlietfl我加了一个小提琴,我希望它能更好地解释整个事情。我想要一个函数将宽度设置为0,并且一个函数重设宽度,但是它在css中定义。 – 2015-03-25 16:25:40

回答

1

你可以只添加检查一切布尔变量:

show = true; 

$('.show-slider').click(function() { 
    if(show == false){ 
    $(".slider").animate({ 
    width: "toggle", 
    }, 300, function() { 
    }); 
    show = true; 
    } 
}); 
$('.hide-slider').click(function() { 
    if (show == true){ 
    $(".slider").animate({ 
    width: "toggle", 
    }, 300, function() { 
    }); 
     show = false; 
    } 
}); 

秀变量是第一个设置好的为真,因为DIV是开始看到...

改变你的小提琴,它会工作!

+1

这是一个很好的解决方案,但我实际上是通过ajax请求触发功能,它使用单独的js文件。这个变量在整个ajax请求中不会保留它的值吗? – 2015-03-25 17:37:04

+0

这花了我一段时间,但你应该检查这个小提琴! http://jsfiddle.net/2x816nmf/31/ 随时索取更多解释 – 2015-03-25 18:09:06