尝试用负数代替右使用左。此外,我建议使用 preventDefault 而不是返回 false。
$(".active").click(function(e){
e.preventDefault();
$("#sidebar").animate({opacity: "hide", left: -250}, "slow");
$(this).toggleClass("btn-slide");
});
更新
我刚刚注意到的另一件事是,当文档准备好时,您将单击事件附加到 .active 按钮,但是当文档准备就绪时,在您更改文档后没有 .active 按钮。这里有几个选项。
首先是使用jquery 1.3新的live特性
$(".btn-slide").live('click', function(e){
e.preventDefault();
$("#sidebar").animate({opacity: "hide", left: 250}, "slow");
$(this).toggleClass("btn-slide").toggleClass("active");
});
$(".active").live('click', function(e){
e.preventDefault();
$("#sidebar").animate({opacity: "hide", left: -250}, "slow");
$(this).toggleClass("btn-slide").toggleClass("active");
});
另一种选择是将点击事件设置在不同的修饰符上(例如,在 id 上,也许)。
<span>News <img src="img/overlay.png" id="sliderButton" class="btn-slide" alt="" /></span>
然后用它来处理点击
$("#sliderButton").click(function(e){
e.preventDefault();
$(this).is('.btn-slide').each(function() {
$("#sidebar").animate({opacity: "show", left: 250}, "slow");
});
$(this).is('.active').each(function() {
$("#sidebar").animate({opacity: "hide", left: -250}, "slow");
});
$(this).toggleClass("active").toggleClass('btn-slide');
});
甚至更简洁
$("#sliderButton").click(function(e){
e.preventDefault();
var animationSettings = {opacity: "show", left: 250};
if ($(this).hasClass('active') )
{
animationSettings = {opacity: "hide", left: -250};
}
$("#sidebar").animate(animationSettings , "slow");
$(this).toggleClass("active").toggleClass('btn-slide');
});
我能想到的最后一个选项是在更改点击事件后设置它们,但我不会这样做,所以我不会提供示例。
最后,我会在您的活动回调中添加警报,并确保您的活动按钮事件实际上正在触发。