我需要重新定义jQuery val()函数,但我不想搞乱源代码。是否可以仅在一个元素上修改它?
具体来说,我需要做这样的事情:$("div.smth").val = function() {return this.innerText;};
。但是,此代码不会修改val函数。我做错了什么?
答案 0 :(得分:3)
您应该修改原型的功能(jQuery调用此fn
)。这就是$(...).something
等所有函数都继承自。
$.fn.val = function() { ... };
如果要保存原始功能:
var old = $.fn.val; // `old` won't be overwritten
$.fn.val = function() { ... };
答案 1 :(得分:2)
这将做你想要的,你需要将新的val
方法附加到jQuery的插件堆栈中:
$.fn.val = function(value) {
return this[0].innerText;
}
答案 2 :(得分:0)
其他答案表明如何替换.val()
方法,但如果你知道你只需要一个特定元素,那么你不能这样做:
$("div.smth")[0].innerText
但是在任何情况下,现有的jQuery .text()
方法都不是那么多吗?
答案 3 :(得分:0)
jsval: function(fn) {
var that = this;
var newfn = function(event) { fn.apply(that, arguments); };
this.click(newfn);
return newfn;
}
现在您可以调用正常的val
并在该特定div上调用jsval