记录我工作学习生活中的点点滴滴......

闭门造车的一个jquery插件机制
发布于 Javascript
2013-11-28 09:40:51
3331
0

为了给新程序引入一个好的jquery插件机制,研究了一天,写出来一个示例代码。

闭门造车,暂时还未参考其他人的,只是实现了功能,所以下面还需要继续完善

$.pt.pluginItem = [];
$.pt.plugin = function (name, method) {
    //判断插件是否加载过
    if ($.pt.pluginItem[name] == undefined) {
        var pluginfile = path + '/pt.' + name + '.js';
        $.pt.includejs(pluginfile);
        $.pt.pluginItem[name] = true;
    }
    name = 'pt' + name;
    if($[name][method]==undefined){
        $[name](this,Array.prototype.slice.call(arguments, 1));
    }else{
        $[name][method].apply(this,Array.prototype.slice.call(arguments, 2));
    }
};

首先是一个数组,记录哪些插件被加载过了,如果加载了那么不需要再次去加载js文件

这里定义了插件的文件名以pt.xxx.js形式,插件名以ptxxx的形式,暂未考虑覆盖到所有的jquery上面

另外还提供了一个加载css及加载js的方法,也是单次加载

$.pt.includecss = function (css,func) {
    //防止多次加载
    if ($("link[href='" + css + "']").length) {
        $.pt.call(func);
        return;
    }
    //加载CSS文件
    $("")
        .load($.pt.call(func))
        .attr({
            "href": css,
            "type": "text/css",
            "rel": "stylesheet"
        }).appendTo("head");
};
$.pt.includejs = function (js,func) {
    //防止多次加载
    if ($("script[src='" + js + "']").length) {
        $.pt.call(func);
        return;
    }
    //加载CSS文件
    $("")
        .load($.pt.call(func))
        .attr({
            "src": js,
            "type": "text/javascript"
        }).appendTo("head");
};


分享本文到:
除非特殊注明,本文版权归原作者所有,欢迎转载!转载请注明版权以及本文地址,谢谢。
转载保留版权:Pakey's BLog >>Javascript >>闭门造车的一个jquery插件机制
本文地址:http://www.pakey.net/blog/562.html