1つの方法は、プラグインを変更して、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);