Один из способов - изменить плагин hoverIntent
так, чтобы его переменная конфигурации cfg
была общедоступной.После строки cfg = $.extend(cfg, g ? { over: f, out: g } : f );
в плагине добавьте:
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$.fn.hoverIntent.cfg = cfg;
Затем вы можете сделать это:
$("#elementID").hoverIntent({
over: function(){ $(this).val("over"); },
out: function(){ $(this).val("out"); }
});
var cfg = $("#elementID").hoverIntent.cfg;
$.extend(cfg, { over: function(){ $(this).val("new over"); } });
$("#elementID").hoverIntent(cfg);
Это не идеально, но я не уверен в другом способесделать это без изменения плагина, расширения переменной конфигурации и повторной инициализации #elementID
.
ОБНОВЛЕНИЕ 1:
Я ранее неправильно понял запрос OP.Ему нужны были функции № 1 и № 3, но не № 2 для запуска:
$("#elementID").hoverIntent({
over: function(){ //function #1 },
out: function(){ //function #2 }
});
var cfg = $("#elementID").hoverIntent.cfg;
var oldOver = cfg.over; // function #1
$.extend(cfg, {
out: false,
over: function(){
oldOver(); // call oldOver aka function #1 above
// function #3
}});
$("#elementID").hoverIntent(cfg);
ОБНОВЛЕНИЕ 2:
Мое решение выше не работает, потому что оно простосоздает глобальную переменную для cfg
, которая затем модифицируется любым дополнительным использованием $.hoverIntent
.
Вот еще один удар по ней с использованием метода $.data()
вместо:
После строки cfg = $.extend(cfg, g ? { over: f, out: g } : f );
в плагине добавьте:
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$(this).data('cfg', cfg);
Затем:
$("#elementID").hoverIntent({
over: function(){ //function #1 },
out: function(){ //function #2 }
});
var cfg = $("#elementID").data('cfg');
var oldOver = cfg.over; // function #1
$.extend(cfg, {
out: false,
over: function(){
oldOver(); // call oldOver aka function #1 above
// function #3
}});
$("#elementID").hoverIntent(cfg);