亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

延遲jquery懸停事件?

延遲jquery懸停事件?

catspeake 2019-08-27 10:17:00
延遲jquery懸停事件?我想在jquery中延遲一個懸停事件。當用戶將鼠標懸停在鏈接或標簽上時,我正在讀取文件。如果用戶只是在屏幕上移動鼠標,我不希望立即發生此事件。有沒有辦法推遲事件的發射?謝謝。示例代碼:$(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插件后,上面的代碼更改為以下代碼來實現它。實現起來非常簡單。$(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條經驗 獲得超4個贊

您需要在懸停時檢查計時器。如果它不存在(即這是第一個懸停),請創建它。如果它存在(即這不是第一個懸停),請將其刪除并重新啟動它。將計時器有效負載設置為您的代碼。

$(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有一個功能可以為你完成這一切。


查看完整回答
反對 回復 2019-08-27
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

完全同意hoverIntent是最好的解決方案,但如果你碰巧是一個不幸的草皮,他在一個網站上工作,有一個漫長而漫長的過程來批準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>如果鼠標已經超過300毫秒。


查看完整回答
反對 回復 2019-08-27
  • 3 回答
  • 0 關注
  • 543 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號