jQuery,'denyClass'扩展受到追捧

时间:2011-08-15 21:48:57

标签: jquery

我想编写一个基本上接受CSS类的jQuery'插件',并拒绝将其添加到给定的选择器中。这甚至可能吗?我无法弄清楚如何实际拦截addClass方法并在不进入jQuery源代码的情况下进行检查 - 而且我对javascript的体验并不足以让您轻松尝试。另外,我正在通过CDN加载jQuery,所以我宁愿不要在源代码中捣乱。

1 个答案:

答案 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);