延遲jquery懸停事件?我想在jquery中延遲一個懸停事件。當(dāng)用戶將鼠標懸停在鏈接或標簽上時,我正在讀取文件。如果用戶只是在屏幕上移動鼠標,我不希望立即發(fā)生此事件。有沒有辦法推遲事件的發(fā)射?謝謝。示例代碼:$(function() {
$('#container a').hover(function() {
$('<div id="fileinfo" />').load('ReadTextFileX.aspx',
{filename:'file.txt'},
function() {
$(this).appendTo('#info');
}
);
},
function() { $('#info').remove(); }
});});更新: (1/14/09) 添加HoverIntent插件后,上面的代碼更改為以下代碼來實現(xiàn)它。實現(xiàn)起來非常簡單。$(function() {
hiConfig = {
sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
interval: 200, // number = milliseconds for onMouseOver polling interval
timeout: 200, // number = milliseconds delay before onMouseOut
over: function() {
$('<div id="fileinfo" />').load('ReadTextFileX.aspx', {filename:'file.txt'},
function() {
$(this).appendTo('#info');
}
);
}, // function = onMouseOver callback (REQUIRED)
out: function() { $('#info').remove(); } // function = onMouseOut callback (REQUIRED)
}
$('#container a').hoverIntent(hiConfig)}
3 回答

慕虎7371278
TA貢獻1802條經(jīng)驗 獲得超4個贊
您需要在懸停時檢查計時器。如果它不存在(即這是第一個懸停),請創(chuàng)建它。如果它存在(即這不是第一個懸停),請將其刪除并重新啟動它。將計時器有效負載設(shè)置為您的代碼。
$(function() { var timer; $('#container a').hover(function() { if(timer) { clearTimeout(timer); timer = null } timer = setTimeout(function() { $('<div id="fileinfo" />').load('ReadTextFileX.aspx', {filename:'file.txt'}, function() { $(this).appendTo('#info'); } ); }, 500) }, // mouse out });});
我敢打賭jQuery有一個功能可以為你完成這一切。

墨色風(fēng)雨
TA貢獻1853條經(jīng)驗 獲得超6個贊
完全同意hoverIntent是最好的解決方案,但如果你碰巧是一個不幸的草皮,他在一個網(wǎng)站上工作,有一個漫長而漫長的過程來批準jQuery插件,這里有一個快速而骯臟的解決方案,對我來說很有用:
$('li.contracted').hover(function () { var expanding = $(this); var timer = window.setTimeout(function () { expanding.data('timerid', null); ... do stuff }, 300); //store ID of newly created timer in DOM object expanding.data('timerid', timer);}, function () { var timerid = $(this).data('timerid'); if (timerid != null) { //mouse out, didn't timeout. Kill previously started timer window.clearTimeout(timerid); }});
這個只是用于擴展<li>如果鼠標已經(jīng)超過300毫秒。
添加回答
舉報
0/150
提交
取消