我想编写一个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);

09-16 09:59