这是用于Drupal的超功能库。第102行的superfish.js文件包含代码:
$.fn.extend({
hideSuperfishUl : function(){
/* some statements */
},
showSuperfishUl : function(){
/* some statements */
}
});
我需要覆盖这两个函数。如何做?(我不是指如何在Drupal中这样做,而是指如何在javascript中这样做)
基于一些信息,我尝试在我自己的脚本中添加以下代码:
(function ($) {
var orig_hideSuperfishUl = $.hideSuperfishUl;
$.hideSuperfishUl = function(){
alert('lol');
}
})(jQuery);
Firebug显示,页面刷新后,以"var“开头的语句将运行,但带有”警报“的语句不会运行。相反,运行原始的hideSuperfishUl函数。
编辑1 I将自定义代码更改为:
(function ($) {
//var orig_hideSuperfishUl = $.hideSuperfishUl;
var hideSuperfishUl = function(){
alert('lol');
}
})(jQuery);
编辑2 i添加了4个断点:
$.fn.extend({
o.retainPath = false;
var hideSuperfishUl = function(){
保持一致alert('lol');
保持一致刷新页面后,断点1处的代码首先运行,然后在断点3处运行。在移动鼠标打开和关闭菜单后,在断点2处运行代码。未到达断点4。
断点1处的调用堆栈只有两个匿名函数(第一个是带有jQuery参数的最外层函数,第二个是断点)。与断点3处的调用堆栈非常相似。
发布于 2013-08-01 11:43:48
有效地覆盖所述函数的代码是:
$.fn.hideSuperfishUl = function(){(...)}
发布于 2013-07-23 11:04:48
你在做什么
var orig_hideSuperfishUl = $.hideSuperfishUl;
是将函数赋值给一个新变量,它不影响原始变量。
尝试简单地重新定义原始的:
var hideSuperfishUl = '';
或
var hideSuperfishUl = function() {...}
https://stackoverflow.com/questions/17818674
复制相似问题