2016-11-08 141 views
0

這種情況是:當我將鼠標懸停在鏈接上時,應該發生一些任務,並且當我離開區域/ mouseleave時,鏈接懸停應該保持禁用狀態1秒鐘,然後再次運行。jQuery解綁並綁定

DEMO PLNKR:

http://plnkr.co/edit/m6SnDzuo2MA5hoYUEoPc?p=preview

這裏是我的做法

$("a").hover(function (event) { 
    event.preventDefault(); 
    alert('hovered'); 
}, function() { 
    $("a").unbind('mouseenter mouseleave'); 
    setTimeout(function() { 
      $("a").bind('mouseenter mouseleave'); 
    }, 1000);  
}); 

所以,當鼠標離開事件發生時,我解除綁定mouseentermouseleave,然後用setTimeout並再次綁定它們。

所以,現在它解除了罰款,但一秒後事件不重新綁定。

如果我在這裏做了任何錯誤,請幫忙。

回答

2

首先你綁定到hover,並且當光標離開時你會unbindmouseentermouseleave。但是你沒有爲它分配任何功能。你真的想重新分配到以前的hover -event嗎?

在你給出的例子中你沒有設置handler

來自docs

EVENTTYPE

類型:String一個包含一個或多個DOM事件類型,如 「點擊」 或 「提交」,或自定義事件名稱的字符串。

處理

類型:Function(事件eventObject)傳遞函數在每次事件觸發時執行。

function onHover(){ 
 
    alert('hovered'); 
 
} 
 

 
function onHoverLeft(){ 
 
    console.log('onHoverLeft called'); 
 
    $("a").off('mouseenter mouseleave'); 
 
    setTimeout(function() { 
 
     console.log('setTimeout is done. Will rebind hover now.'); 
 
     $("a").hover(onHover, onHoverLeft); 
 
    }, 2000); 
 
} 
 
$("a").hover(onHover, onHoverLeft);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Foo</a>

+0

是。其實我希望在mouseleave懸停事件的鏈接應該不會工作1秒。之後,如果我徘徊它應該像以前執行 –

+0

@MarkWilson - 我已經編輯了片段。 – smoksnes

+0

謝謝。做了這份工作。但我只是無法理解它是如何重寫在片段中。 '$(「a」)。off('mouseenter mouseleave');'解除綁定。然後在1秒後,你只是再次懸停。 –