// overrides a method thats supposed to be called on a single node (a method like val)
$.fn.overrideNodeMethod = function(methodName, action) {
var originalVal = $.fn[methodName];
var thisNode = this;
$.fn[methodName] = function() {
if (this[0]==thisNode[0]) {
return action.apply(this, arguments);
} else {
return originalVal.apply(this, arguments);
}
};
};
jQuery.fn.val = function(value) {
var t = jQuery(this);
if(t.get(0)) {
//Check for overwritten function
var func = jQuery.data(t.get(0), \'val-function\');
if(jQuery.isFunction(func)) {
return func(value);
}
}
//Use old function
return jQuery(this).oldval(value);
};
之后,您可以使用以下命令为您的Element-Data设置函数:
var element = jQuery(...);
jQuery.data(element.get(0), \'val-function\', function(value){
/* Your Function here */
});
5 个回复
讼乐
通过Dave的答案获得奖励-您不必污染jquery数据名称空间,也不必担心有人覆盖该密钥
闪脖
坝胺绣敝
都会调用1000个函数! 我的
可以根据需要多次应用于任意元素。它基本上检查
数据
僻朵庙惩竣
属性,该属性包含(duh)用来获取元素的原始选择器(我还没有真正使用过它,所以我不确定在使用过程中会发生什么情况通过一系列方法)。 因此,您可以将
方法包装在检查
属性的函数中,然后决定使用函数还是原始函数。它看起来像这样:
您以前基本上已经有了这个,我只是对其进行了调整,因此它将应用于所有新的jQuery实例。 (此外,它本身非常简单;您需要相应地对其进行修改/增强。)
抵舵
我会编写一个全局函数来捕获val()函数:
之后,您可以使用以下命令为您的Element-Data设置函数:
我不知道这行不通。试试吧。这只是我的大脑。