如何将jquery.on后移到jquery.bind?

时间:2015-05-04 13:54:56

标签: jquery

我绝对必须调整这一行以使用旧的jquery 1.51

运行
this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector)

我无法理解语法。我知道burly括号内的部分是事件,但它是什么意思呢?

'mouseenter.hoverIntent':handleHover

这个?

'mouseleave.hoverIntent':handleHover    

代码是从here

获取的脚本的最后一行

我正在做这个backport,因为.on仅在1.7之后可用,而且我使用的是1.5.1,我无法升级,这绝对是令人伤心的事情。

adminbar.find(' li.menupop')hoverIntent({。             结束:function(e){                 if(disableHoverIntent)                     返回;

            $(this).addClass('hover');
        },
        out: function(e){
            if ( disableHoverIntent )
                return;

            $(this).removeClass('hover');
        },
        timeout: 180,
        sensitivity: 7,
        interval: 100
    });

我只是想用

替换
return this.bind({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);

我现在没有错误,但是,简单来说,它不起作用,鼠标悬停时菜单打开不再触发

**这个代码是如何使用的? **

adminbar.find('li.menupop').hoverIntent({
        over: function(e){
            if ( disableHoverIntent )
                return;

            $(this).addClass('hover');
        },
        out: function(e){
            if ( disableHoverIntent )
                return;

            $(this).removeClass('hover');
        },
        timeout: 180,
        sensitivity: 7,
        interval: 100
    });

重要说明2

尝试转储cfg.selectorundefined。所以我实际上并不知道如何正确地将此扩展转储到所选元素。

2 个答案:

答案 0 :(得分:4)

修改,更新

关注并使用@ a-wolff提供的jsfiddle http://jsfiddle.net/h29oh09t/1/,最低限度修改

(function ($) {
    $.fn.hoverIntent = function (handlerIn, handlerOut, selector, cfg) {

        // default configuration values
        var cfg = cfg || {
            interval: 100,
            sensitivity: 6,
            timeout: 0
        };

var adminbar = $("ul");

var disableHoverIntent = false;

adminbar.find('li.menupop').hoverIntent({
    over: function (e) {
        if (disableHoverIntent) return;

        $(this).addClass('hover');
    },
    out: function (e) {
        if (disableHoverIntent) return;

        $(this).removeClass('hover');
    }
}, null, {timeout: 180,
        sensitivity: 7,
        interval: 100});
  

但这是什么意思?

     

'mouseenter.hoverIntent':handleHover

.hoverIntent部分

mouseenter.hoverIntent

似乎是namespace

请参阅.on() - Event names and namespaces

答案 1 :(得分:0)

bind()替换on()应该为jQuery 1.5做你需要的。传入的对象由表示事件类型的键组成,该对象的值表示事件处理程序。因此,在'mouseenter.hoverIntent':handleHover的情况下,事件类型为mouseenter.hoverIntent,这是一个在代码中的其他位置触发的自定义事件。触发该事件后,将调用handleHover函数。