Могу ли я вызвать эту анонимную функцию в jQuery, вызвав что-то? - PullRequest
0 голосов
/ 09 декабря 2010

Я использую плагин hoverIntent jQuery вместо метода hover() в jQuery.Я хочу, чтобы событие mouseout вызывалось автоматически.

При использовании hover() я могу вызвать событие mouseout, вызвав mouseout().Это не работает при использовании hoverIntent.

Я также пытался вызвать именованную анонимную функцию, но у меня это не сработало (и я слышал, что старые IE не любят именованные анонимные функции).

Вот пример jsFiddle.

Если я автоматически вызываю функцию mouseout , ее нельзя вызвать с помощью hoverIntent.

Теперь я знаю, что могу сделать ...

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

something();

Но мне было интересно, возможно ли то, что я хотел?

Спасибо

1 Ответ

2 голосов
/ 09 декабря 2010

К сожалению, кроме именованной функции, нет способа, кроме как с тем, как плагин структурирован ... он не сохраняется каким-либо образом, который доступен позже, только для закрытия плагина.

Здесь установлено:

$.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);

... тогда все ссылки на этот объект cfg доступны только внутри плагина. Если вы хотите изменить плагин и сохранить этот cfg объект через .data(), например, вы можете, но, как есть, нет способа получить доступ или вызвать анонимный обработчик.

...