1

我正在尝试在下面的 jQuery 中延迟 mousehouver 事件

document.observe('mouseover', (function (event) {
    var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
    if (target) {
        event.stop();
        this.start(target);
    }
}).bind(this));
},

我试过这样

document.observe('mouseover', (function (event), 2000) {
    var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
    if (target) {
        event.stop();
        this.start(target);
    }
}).bind(this));
},

但它没有用。

请问我怎么做这个工作?

谢谢

我也试过这个,但是悬停不起作用。

    var hoverTimeout;
       document.observe('mouseenter', (function(event){
        hoverTimeout = setTimeout(function(){
    document.observe('mouseover', (function(event){
        var target = event.findElement('a[rel^=lightbox]') ||                                                             event.findElement('area[rel^=lightbox]');
        if (target) {
            event.stop();
            this.start(target);
        }
    }).bind(this));
},
 }, 2000);

});

4

2 回答 2

3

您需要执行此操作(可能稍作修改,因为我没有测试此代码)以覆盖 Lightbox 事件处理程序中的行为,这应该在您加载 Lightbox 脚本后立即放置:

<script src="js/lightbox.js" type="text/javascript"></script>
<script type="text/javascript">
Lightbox.prototype.updateImageList = function() {
    this.updateImageList = Prototype.emptyFunction; 

    var hoverTimeout, delayMilliseconds = 2000;
    document.observe('mouseover', (function(event){
        var target = event.findElement('a[rel^=lightbox]')
            || event.findElement('area[rel^=lightbox]');
        if (target) {
            hoverTimeout = setTimeout(function(){
                event.stop();
                this.start(target);
            }, delayMilliseconds);
            target.one('mouseleave', function(){
                clearTimeout(hoverTimeout);
            });
        }
    }).bind(this));
};
</script>
于 2013-02-09T20:47:12.873 回答
1

查看 hoverIntent 插件,我认为这正是您正在寻找的:)。 http://cherne.net/brian/resources/jquery.hoverIntent.html

于 2013-02-09T20:45:20.330 回答