简体   繁体   中英

Can I call this anonymous function in jQuery by triggering something?

I'm using the hoverIntent jQuery plugin in place of jQuery's hover() method. I want the mouseout event to be called automatically.

When using hover() , I can trigger the mouseout event by calling mouseout() . This doesn't work when using hoverIntent.

I also tried calling a named anonymous function, but it didn't work for me (and I hear older IEs don't like named anonymous functions).

Here is an example on jsFiddle.

If I auto invoke the mouseout function, it can't be called via hoverIntent.

Now I know I could do...

$('something').hoverIntent(function() { }, something);

something();

But I was wondering if what I wanted was possible?

Thanks

Unfortunately there's not a way besides a named function, not with how the plugin is structured...it's not stored in any way that's accessible later, only to the plugin's closure.

It's set here:

$.fn.hoverIntent = function(f, g) {
    // default configuration options
    var cfg = {
        sensitivity: 7,
        interval: 100,
        timeout: 0
    };
    // override configuration options with user supplied object
    cfg = $.extend(cfg, g ? {
        over: f,
        out: g
    } : f);

...then after that all references are to that cfg object which is only accessible inside the plugin. If you wanted to change the plugin and store that cfg object via .data() for example you could, but as-is there's no way to access or trigger either anonymous handler.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM