Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何允许用户创建jQuery插件的两个实例_Javascript_Jquery_Html_Jquery Plugins - Fatal编程技术网

Javascript 如何允许用户创建jQuery插件的两个实例

Javascript 如何允许用户创建jQuery插件的两个实例,javascript,jquery,html,jquery-plugins,Javascript,Jquery,Html,Jquery Plugins,我创建了以下插件。当我尝试初始化它两次时,它不起作用。在演示中,如果打开浏览器控制台,open链接没有响应。相反,菜单链接将调用secondFunc函数两次。我不明白我在哪里犯了错误 HTML <div class="home"> <div class="open-door-c"> <a href="#" class="open-door">open</a> </div>

我创建了以下插件。当我尝试初始化它两次时,它不起作用。在演示中,如果打开浏览器控制台,
open
链接没有响应。相反,菜单链接将调用
secondFunc
函数两次。我不明白我在哪里犯了错误

HTML

 <div class="home">
       <div class="open-door-c">
           <a href="#" class="open-door">open</a>
        </div>
        <div class="container"> 
            <div class="info" >
                <div class="nav">
                    <ul class="menu">
                        <li><a href="#" class="link">1</a></li>
                        <li><a href="#" class="link">2</a></li>
                        <li><a href="#" class="link">3</a></li>
                        <li><a href="#" class="link">4</a></li>
                        <li><a href="#" class="link">5</a></li>
                    </ul>
                </div>
                <div class="more-details-container">
                    <div>
                        <h1>title</h1>
                    </div>
                    <div class="sec">
                        1
                    </div>
                    <div class="sec">
                        2
                    </div>
                    <div class="sec">
                        3
                    </div>
                    <div class="sec">
                        4
                    </div>
                    <div class="sec">
                        5
                    </div>
                </div>
            </div>
        </div>
    </div>

有两种可能的错误:

  • $.extend({},$.fn.myPlugin.options,options)
    将只返回一个包含$.fn.myPlugin.options和options属性的新对象,但不会更新您在下面使用的$.fn.myPlugin.options对象:

    $.fn.myPlugin.options.linkClass.on('click',this.secondFunc)

要保留原始对象并将扩展对象分配给$.fn.myPlugin.options,请尝试以下操作:

$.fn.myPlugin.options = $.extend({}, $.fn.myPlugin.options, options); // read more on [jQuery extend](// http://api.jquery.com/jquery.extend/)
  • 我认为没有必要使用下面的每个迭代:

$.fn.myPlugin=函数(选项){
返回此。每个函数(选项){
var rezG=Object.create(MyPlugin);
rezG.init(选项,本);
});
};

使用
element.myPlugin(…)实例化新插件时,将正确调用
init()
,它将使用指定的参数
options
创建一个新的插件引用

看看这个更新,看看你是否在寻找

$.fn.myPlugin.options = $.extend({}, $.fn.myPlugin.options, options); // read more on [jQuery extend](// http://api.jquery.com/jquery.extend/)