我想编写一个基本上接受CSS类的jQuery'插件',并拒绝将其添加到给定的选择器中。这甚至可能吗?我无法弄清楚如何实际拦截addClass
方法并在不进入jQuery源代码的情况下进行检查 - 而且我对javascript的体验并不足以让您轻松尝试。另外,我正在通过CDN加载jQuery,所以我宁愿不要在源代码中捣乱。
答案 0 :(得分:3)
如果您接受硬编码被拒绝的课程,您可以像这样覆盖它。您可以在任何地方添加它,只需使用增强的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);