Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何为hoverIntent绑定多个EventHandler?_Jquery_Binding_Event Handling_Mouseover_Hoverintent - Fatal编程技术网

Jquery 如何为hoverIntent绑定多个EventHandler?

Jquery 如何为hoverIntent绑定多个EventHandler?,jquery,binding,event-handling,mouseover,hoverintent,Jquery,Binding,Event Handling,Mouseover,Hoverintent,我的一个js文件中有以下代码 $('#elementID').hoverIntent({ over: function() {//function#1 body}, out: function() {// function#2 body} }); 在我的另一个js文件中,我想向hoverIntent添加另一个方法。 但是新绑定会覆盖上一个绑定,并且只有新绑定会执行 $('#elementID').hoverIntent({ over: function() {//fun

我的一个js文件中有以下代码

$('#elementID').hoverIntent({
    over: function() {//function#1 body},
    out: function() {// function#2 body}
});
在我的另一个js文件中,我想向hoverIntent添加另一个方法。 但是新绑定会覆盖上一个绑定,并且只有新绑定会执行

$('#elementID').hoverIntent({
    over: function() {//function#3 body}
});
所以我希望函数#1和函数#3都在悬停状态下执行

这有可能吗

如果不是的话,请你给我指另一个方向,这样我就可以这样做了

注意:我没有更改第一个文件的权限。我只想给悬停添加额外的功能


谢谢。

在我看来,hoverIntent插件没有设置为支持多个事件处理程序。您可能需要对hoverIntent代码进行修补才能使其正常工作。

在我看来,hoverIntent插件没有设置为支持多个事件处理程序。您可能需要对hoverIntent代码进行修补才能实现此功能。

一种方法是修改插件
hoverIntent
,使其配置变量
cfg
是公共的。在第
cfg=$.extend(cfg,g?{over:f,out:g}:f)行之后
在插件中,添加:

cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$.fn.hoverIntent.cfg = cfg;
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$(this).data('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 );
$.fn.hoverIntent.cfg = cfg;
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$(this).data('cfg', cfg);
然后:


一种方法是修改插件
hoverIntent
,使其配置变量
cfg
是公共的。在第
cfg=$.extend(cfg,g?{over:f,out:g}:f)行之后
在插件中,添加:

cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$.fn.hoverIntent.cfg = cfg;
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$(this).data('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 );
$.fn.hoverIntent.cfg = cfg;
cfg = $.extend(cfg, g ? { over: f, out: g } : f );
$(this).data('cfg', cfg);
然后:


我知道这是一个老问题,但它是在搜索时出现的,所以我在这里插入我的答案,以防其他人遇到它

hoverIntent插件不打算处理多个回调,所以我已经修补了一个版本。它还没有完全测试跨浏览器兼容性,但由于一切都是通过jQuery的API完成的,所以应该可以


我知道这是一个老问题,但它是在搜索时出现的,所以我将我的答案插入这里,以防其他人遇到它

hoverIntent插件不打算处理多个回调,所以我已经修补了一个版本。它还没有完全测试跨浏览器兼容性,但由于一切都是通过jQuery的API完成的,所以应该可以


我真的不知道为什么,但cfg似乎不可用。我甚至试过只设置旧版本,但它不起作用。$。扩展(cfg,{over:function(){oldOver();}});没有任何事情发生,弹出窗口将不再显示。我改变了灵敏度,这样我就可以追踪到它是否得到了正确的cfg。但在调试时,我始终为$(“#elementID”)获得了不同的灵敏度(=7)。hoverIntent.cfg。您是否如我上面所述修改了插件的代码?您必须将
cfg
设置为可公开访问。对象{sensitivity=7,interval=200,timeout=200}。这是我一直为那个元素得到的cfg。具有两个over-and-out函数。您在插件中的何处添加了
$.fn.hoverIntent.cfg=cfg?在这一行之后:cfg=$.extend(cfg,g?{over:f,out:g}:f);我真的不知道为什么,但似乎cfg是不可用的。我甚至试过只设置旧版本,但它不起作用。$。扩展(cfg,{over:function(){oldOver();}});没有任何事情发生,弹出窗口将不再显示。我改变了灵敏度,这样我就可以追踪到它是否得到了正确的cfg。但在调试时,我始终为$(“#elementID”)获得了不同的灵敏度(=7)。hoverIntent.cfg。您是否如我上面所述修改了插件的代码?您必须将
cfg
设置为可公开访问。对象{sensitivity=7,interval=200,timeout=200}。这是我一直为那个元素得到的cfg。具有两个over-and-out函数。您在插件中的何处添加了
$.fn.hoverIntent.cfg=cfg?在这一行之后:cfg=$.extend(cfg,g?{over:f,out:g}:f);