jQuery核心方法重载

我怎样才能重载或扩展(或拦截)jQuery的.html()方法,以便它以默认方式工作,除非该对象具有某个类?

谢谢

您只需覆盖该function,同时保持对原始的引用。

var jq_html_function = $.fn.html; $.fn.html = function() { $(this).each(function() { if($(this).hasClass('someclass')) { // Do something return; } jq_html_function.apply(this, arguments); }); }; 

这不是一个hacky解决方案吗? 我认为我们应该让框架保持原样。 如果您想使用新版本的jQuery,或者如果您聘请了需要使用未经修改的.html()新开发人员,该怎么办?

为什么不:

$('.blah').setHtml('

something

');

哪里:

 (function($) { $.fn.setHtml = function(html) { if (html.parse_for_class == true) { //do something with it } else { $(this).html(html); } return; } }