Jquery 初始化自己的插件

Jquery 初始化自己的插件,jquery,jquery-plugins,Jquery,Jquery Plugins,我已经为我的客户编写了一些jquery插件。我想写一个函数,将初始化已加载的每个插件 例如: <script src="/Scripts/jquery.plugin1.min.js")" type="text/javascript"></script> <script src="/Scripts/jquery.plugin2.min.js")" type="text/javascript"></script> <script src="/Sc

我已经为我的客户编写了一些jquery插件。我想写一个函数,将初始化已加载的每个插件

例如:

<script src="/Scripts/jquery.plugin1.min.js")" type="text/javascript"></script>
<script src="/Scripts/jquery.plugin2.min.js")" type="text/javascript"></script>
<script src="/Scripts/jquery.initializer.min.js")" type="text/javascript"></script>
我知道我可以使用
jQuery().pluginName
检查插件是否存在。但我想有一个更精简的方式。所有加载的插件是否都可以在数组中注册一个初始化函数,或者类似于我在document.ready中可以迭代并调用的函数

比如:

我想这一切归结为三个问题:

  • 如何使用jquery“全局”数组
  • 如何遍历该数组以调用已注册的方法
  • 有更好的方法吗
  • 更新以回答评论

    a) 因为我正在基于ASP.NETMVC3为我的客户机构建一个新框架,他们的所有开发人员都习惯于WebForms中的拖放功能。我想使转换尽可能顺利,因为他们不了解jquery。他们只需要包含jquery脚本就可以获得新功能,这是一个很大的优势。当他们有更好的jquery知识时,使用单独的初始化器脚本也可以禁用此功能

    b) 我使用Ajax通过返回HTML来更新一些
    div
    s。HTML需要由所有插件处理以添加插件功能,否则所有更新的部分将无法按上述方式工作


    为什么我想这样做很重要?:)这不是一件非常复杂的事情。

    您可以创建如下数组:

    $.myPlugins = [
        {plugin: "plugin1", selector: "a.ajax"},
        {plugin: "plugin2", selector: "div.test2"}
    ];
    
    function initPlugins() {
        for (var i = 0, item; item = $.myPlugins[i]; i++) {
            $(item.selector)[item.plugin]();
        }
    }
    
    还有一个运行所有插件的函数,如下所示:

    $.myPlugins = [
        {plugin: "plugin1", selector: "a.ajax"},
        {plugin: "plugin2", selector: "div.test2"}
    ];
    
    function initPlugins() {
        for (var i = 0, item; item = $.myPlugins[i]; i++) {
            $(item.selector)[item.plugin]();
        }
    }
    
    现在在DOM ready上运行该函数,并在AJAX上完成:

    $(document).ready(initPlugins).ajaxComplete(initPlugins);
    
    但是,使用此方法,某些元素可能会被多次初始化。在
    initPlugins()


    您可以创建如下数组:

    $.myPlugins = [
        {plugin: "plugin1", selector: "a.ajax"},
        {plugin: "plugin2", selector: "div.test2"}
    ];
    
    function initPlugins() {
        for (var i = 0, item; item = $.myPlugins[i]; i++) {
            $(item.selector)[item.plugin]();
        }
    }
    
    还有一个运行所有插件的函数,如下所示:

    $.myPlugins = [
        {plugin: "plugin1", selector: "a.ajax"},
        {plugin: "plugin2", selector: "div.test2"}
    ];
    
    function initPlugins() {
        for (var i = 0, item; item = $.myPlugins[i]; i++) {
            $(item.selector)[item.plugin]();
        }
    }
    
    现在在DOM ready上运行该函数,并在AJAX上完成:

    $(document).ready(initPlugins).ajaxComplete(initPlugins);
    
    但是,使用此方法,某些元素可能会被多次初始化。在
    initPlugins()


    也许最好描述一下你真正想要实现的目标。你为什么要这样做?用答案更新问题也许可以很好地描述你真正想要实现的目标。为什么需要这样做?更新了问题的答案,该答案将强制用户在添加脚本时始终使用默认行为。通过将初始化过程放在单独的脚本中,使它们能够通过不添加init脚本来禁用它。另外,它不适用于通过ajax加载的HTML,因为document.ready不会触发。@jgauffin,抱歉,我误解了你的问题。这将迫使用户在添加脚本时始终使用默认行为。通过将初始化过程放在单独的脚本中,使它们能够通过不添加init脚本来禁用它。另外,它对通过ajax加载的HTML也不起作用,因为document.ready不要启动。@jgauffin,抱歉,我误解了您的问题。