2012-06-06 1 views
2

Сначала я подумал, что это так. Но, очевидно, это не будет clearInterval.Можно ли установитьInterval в глобальный var, чтобы он был доступен отдельными функциями?

Чтобы сделать его доступным, я установил несколько глобальных пространств с именами.

$.faux_download = {}; 
    $.faux_download._counter = 0; 

Затем я разделяю каждую деталь действия наведения в отдельных методах совместного доступа.

init_hover_handler: function($this, evt) { 
    $this = $($this); 
    $.faux_download._counter = setInterval(function(){ SSK.calendar.check_load_popup($this) }, 1000); 
    }, 
    init_hover_out_handler: function() { 
    clearInterval($.faux_download._counter); 
    }, 

Сейчас все это работает здесь , пока я не добавлять объекты динамически, которые являются одни и те же функциональные возможности

На что я использую live событие для связывания:

$(".extended-cell-popup:last .job a, .extended-cell-popup:last .task a").live('hover', function(evt){ 
     SSK.calendar.init_hover_handler(this, evt); 
    }, function(){ 
     SSK.calendar.init_hover_out_handler(); 
    }); 

Теперь наведение работа здесь, но четкий интервал, похоже, не работает с этими вновь созданными динамическими элементами.

Однако, если бы я был на мыши, некоторые из тех, которые загружались со страницы, те успешно очистили бы интервал и работа соответствующим образом.

Кто-нибудь знает, почему это так?

JQuery 1.4.4 (Просто потому, что не ненавидишь меня.)

ответ

1

Обычно я удалить это, но это на самом деле интересный ответ.

Вы не можете привязать hover. Вы должны связать mouseenter и mouseleave.

+1

Правда. 'hover' не является реальным событием, а' .hover (func, func) 'просто является ярлыком для одновременного установки обработчиков« mouseeneter »и« mouseleave ». – lanzz

Смежные вопросы