我正在构建一个具有浮动(固定位置)篮子的网站(使用jQuery 1.4)。
当前正常工作功能( Demo here ):
我正在努力的事情
javascript
//Toggle basket directly
$("#basket-button").click(function(){
$("#basket-contents").slideToggle();
$("#floating-basket").toggleClass("locked on");
return false
});
//Toggle basket with a 'buy now' button
$(".buy-button").click(function(){
//open basket
$("#basket-contents").slideDown();
$("#floating-basket").addClass("on");
//set track name
$("#basket-trackname").text($(this).attr('name'));
//Display basket message
$("#basket-message").fadeIn();
return false
});
HTML
<a class="buy-button" name="Item Name one" href="#">Buy</a>
<a class="buy-button" name="Item Name two" href="#">Buy</a>
<div id="floating-basket">
<div id="basket-message">
<strong id="basket-trackname"></strong> added to basket!
</div>
<a href="/basket" id="basket-button">My Basket <span id="basket-number">0</span></a>
<div id="basket-contents">
lorem
<a href="#">Checkout</a>
</div>
</div>
http://www.webresourcesdepot.com/ajaxed-sliding-shopping-cart-with-jquery是我发现的最接近的东西 - 但即使这样也有问题(例如,如果你添加一个项目并快速关闭篮子)。
非常感谢一些意见:)
答案 0 :(得分:3)
了解setTimeout
和clearTimeout
var t = setTimeout(function(){ whattodo(); }, 3000);
会做匿名函数,它基本上只包含whattodo()
函数(可以隐藏篮子等)。
然后在每次点击,.stop()
动画并致电:
clearTimeout(t); // clears previous timeout
t = setTimeout(function(){ whattodo(); }, 3000); //set new timeout
所以,setTimeout
/ clearTimeout
将在3秒内隐藏时间,而.stop()
会停止正在进行的动画 - 了解更多@ http://api.jquery.com/stop/ - 基本用法:
$(myelementwithanimation).stop()
以及有关超时的更多信息:http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/
答案 1 :(得分:0)
我认为你在寻找.stop()
答案 2 :(得分:0)
这是您需要的想法:
free=true;
function doSomeAnimation(){
//do what is done either way
if(free){
free=false;
$(something).addClass('foo').slideDown(function(){free=true;});
}
}
而不是取消动画 - 如果它们已在运行
,则不要触发它们PS。超时是可以的,但你必须保持所有处理程序能够清除超时,所以它变得丑陋......;)