我想编写一个jQuery'plugin',它实质上接受CSS类,并拒绝将其添加到给定的选择器中。这有可能吗?我无法弄清楚如何真正地拦截addClass
方法并在不使用jQuery源代码的情况下进行检查-我对javascript的经验还不足以使自己满意。另外,我正在通过CDN加载jQuery,所以我宁愿不要乱搞它的源代码。
最佳答案
如果您接受硬编码拒绝的类,则可以像这样覆盖它。您可以将其添加到任何地方,它会使用增强的addClass
函数简单地“修补” jQuery。
http://jsfiddle.net/pimvdb/A8ePY/1/
(function($) {
// keep copy of original function
var old = $.fn.addClass;
$.fn.addClass = function(classes) {
var spl = classes.split(" ");
// remove denied class if present
if(spl.indexOf("denied") > -1) {
spl.splice(spl.indexOf("denied"), 1);
}
// pass everything to original function (altered classes plus other arguments)
return old.apply(this,
spl.concat([].slice.call(arguments, 1)));
};
})(jQuery);