1

我在页面中有一堆动态创建的元素,带有不同的“onmouseover”脚本。我想知道是否可以使用 jquery 脚本自动将它们替换onmouseover为等效的hoverintent.

例子:

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

然后使用 jquery 类似'对于具有绑定'onmouseover'事件的元素,将调用替换为hoverintent等效项。

我什至不确定这是否可能,我该怎么做?

4

1 回答 1

0

不确定这与 x-browser 的兼容性如何,但适用于 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/

于 2012-07-13T15:47:44.700 回答