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