下面是HTML & jQuery代碼我有:JQuery的動畫延遲問題
HTML我有:
<div class="announcement">
<img id="imgBanner" style="cursor: pointer;" onmouseover="showPopup();" />
</div>
<div id="divArrow" class="arrow">
<img id="imgExpandContract" style="cursor: pointer;" alt="Arrow" border="0"onmouseover="showPopup();" />
</div>
<div id="window">
<!-- some html content acting as a fly-out -->
</div>
JS代碼:
var imgBanner = "xyx.png";
var imgArrowExpand = "xyx.png";
var imgArrowContract = "xyx.png";
var isDone = false;
function showPopup() {
try {
var imgWidth = $("#imgExpandContract").width();
var posX = document.getElementById("imgExpandContract").offsetLeft + imgWidth;
if (!$("#window").is(":animated")) {
$("#window").animate({ left: posX }, 800, 'easeOutSine',
function() {
isDone = true;
$("#imgExpandContract").attr("src", imgArrowContract);
$("#window").bind("mouseenter", function() { $("#window").bind("mouseleave", function() { closePopup(); }); });
}
);
}
}
catch (error) {
//disable the banner, arrow images
document.getElementById("imgBanner").style.visibility = 'hidden';
document.getElementById("imgExpandContract").style.visibility = 'hidden';
}
}
function closePopup() {
try {
if (isDone) {
var posY = $("#window").width();
$("#window").animate({ left: -posY }, 600, 'linear',
function() {
isDone = false;
$("#imgExpandContract").attr("src", imgArrowExpand);
$("#window").unbind("mouseenter");
$("#window").unbind("mouseleave");
}
);
}
}
catch (error) {
//disable the banner, arrow images
document.getElementById("imgBanner").style.visibility = 'hidden';
document.getElementById("imgExpandContract").style.visibility = 'hidden';
}
}
目前我有2個問題
:
當我將鼠標移出#window div時,在調用mouseleave之前有一個小的延遲。我怎樣才能讓它消失?它有點保持幾毫秒,然後注視老鼠葉子。
mouseleave事件有時不會觸發......偶爾會發生,但會發生。我必須在#window div上移動我的鼠標並移回(基本上必須執行兩次)?任何人都可以讓我知道爲什麼會發生這種情況,我能如何處理?
除了在JQuery中使用animate()之外,還有更好的解決方案嗎?對所有/任何建議感到高興。我正在嘗試使用div內的內容執行飛出/幻燈片效果。
非常感謝您的幫助
對於$(element).stop(true)爲+1;我解決了我的問題,雖然我的問題不同:) – Dimskiy 2010-08-05 17:28:36