这是Superfish library used in Drupal。第102行的superfish.js文件包含代码:
$.fn.extend({
hideSuperfishUl : function(){
/* some statements */
},
showSuperfishUl : function(){
/* some statements */
}
});
我需要覆盖这两个功能。 怎么做?(我不是故意在Drupal中如何做,而是在javascript中如何做)
P.S。根据一些信息,我尝试在我自己的脚本中添加此代码:
(function ($) {
var orig_hideSuperfishUl = $.hideSuperfishUl;
$.hideSuperfishUl = function(){
alert('lol');
}
})(jQuery);
Firebug显示以" var"开头的语句刷新页面后运行,但是使用" alert"不运行。相反,原始的hideSuperfishUl函数会运行。
[编辑1] 我将自定义代码更改为:
(function ($) {
//var orig_hideSuperfishUl = $.hideSuperfishUl;
var hideSuperfishUl = function(){
alert('lol');
}
})(jQuery);
[编辑2] 我添加了4个断点:
$.fn.extend({
o.retainPath = false;
var hideSuperfishUl = function(){
alert('lol');
刷新页面后,断点1处的代码先运行,然后处于断点3.运行鼠标开启和关闭菜单后,断点2处的代码运行。未达到断点4。
断点1处的调用堆栈只有两个匿名函数(第一个是带有jQuery参数的最外层函数,第二个是断点)。断点3处的调用堆栈非常相似。
答案 0 :(得分:1)
有效覆盖相关功能的代码是:
$.fn.hideSuperfishUl = function(){(...)}
答案 1 :(得分:0)
你正在做什么
var orig_hideSuperfishUl = $.hideSuperfishUl;
将函数分配给新变量,该变量不会影响原始变量。
尝试简单地重新定义原文:
var hideSuperfishUl = '';
或
var hideSuperfishUl = function() {...}