2012-07-13 72 views
1

我在頁面中有一堆動態創建的元素,使用不同的'onmouseover'腳本。我想知道如果我可以使用jQuery腳本自動替換它們的onmouseover與等效hoverintent用onmouseover替換所有元素以使用hoverintent

實施例:

<div onmouseover='dothis()'>Hello</div> 
<div onmouseover='dothat()'>World</div> 
<div onmouseover='dosomething()'>Seeya</div> 

,然後與jquery類似「對於具有約束‘的元素的onmouseover’事件,替換爲等效hoverintent呼叫。

我甚至不確定這是可能的,我該怎麼做?

回答

0

不確定這是如何與X瀏覽器兼容,但可以在Chrome上使用。

我抓住所有具有onmouseover屬性定義的元素。我遍歷每個元素,保存onmouseover屬性值,然後從元素中刪除屬性。然後,我爲每個元素添加一個新的懸停事件,設置懸停時的超時時間並將其懸停時清除。超時執行時,將運行保存的onmouseover屬性值。

默認的超時時間是1秒(1000毫秒)。

的jQuery:

$('[onmouseover]').each(function(){ 

    var _ = $(this).attr('onmouseover'); 

    $(this).attr('onmouseover', '').hover(function(){  
     $(this).data('timeout', setTimeout(function(){ eval(_); },1000));   
    },function(){   
     clearTimeout($(this).data('timeout'));   
    }); 

});​ 

小提琴:

http://jsfiddle.net/iambriansreed/D3dmv/

+0

很酷。測試了FF和IE8中的小提琴,並在兩者上工作,所以猜測它是X瀏覽器兼容 – Rodolfo 2012-07-13 15:57:30

+0

@Rodolfo請接受,如果這是一個很好的答案。 – iambriansreed 2012-07-13 17:02:30

+0

當然是等着看我午休時是否還有別的東西 – Rodolfo 2012-07-13 17:14:08