一种方法是修改插件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);