Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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_Twitter Bootstrap_Twitter Bootstrap 3 - Fatal编程技术网

Javascript 从数据属性初始化JQuery插件?

Javascript 从数据属性初始化JQuery插件?,javascript,jquery,twitter-bootstrap,twitter-bootstrap-3,Javascript,Jquery,Twitter Bootstrap,Twitter Bootstrap 3,您可以在不使用任何javascript的情况下初始化引导下拉列表。您也可以手动初始化它 我创建了一个JQuery插件,并将所有默认值和选项与$.extends合并 var settings = $.extend(true, {}, defaults, options, $self.data()); 我的插件像任何普通插件一样初始化 $('ul.dropdown.users-list').awesomeplugin({/* ... */}); 有什么正确的方法可以让它自动初始化,但如果它是手动

您可以在不使用任何javascript的情况下初始化引导下拉列表。您也可以手动初始化它

我创建了一个JQuery插件,并将所有默认值和选项与
$.extends
合并

var settings = $.extend(true, {}, defaults, options, $self.data());
我的插件像任何普通插件一样初始化

$('ul.dropdown.users-list').awesomeplugin({/* ... */});
有什么正确的方法可以让它自动初始化,但如果它是手动初始化的,它也不会被复制,就像引导下拉菜单一样

例如,我知道我可以做这样的事情:

$(function(){
 $('[data-myawesomeplugin]').each(function(){
     $(this).myawesomeplugin();
 });
});
但是如果有人决定手动初始化,初始化不会发生两次吗?

在页面加载(或任何其他必需的依赖项加载)后,您可以选择所有必需的元素(使用jquery选择器)并初始化它们。 此外,还添加了某种对象池,用于存储所有初始化的对象。
在对象初始化期间,您可以检查该对象是否已初始化,如果已初始化,则只返回该对象,而不创建任何新对象。唯一对象的识别和旧对象的获取完全基于您的用例。

这很容易,除非它应该用于将来添加的动态插入元素。如果没有,您只需搜索具有特定数据属性的元素,并在这些元素上运行插件。@adeneo但是如果您随后决定手动执行此操作一次以指定某些选项,那么您不也会手动初始化插件,然后从数据属性中获得它自己的初始化吗?因此,它将被初始化两次?只需向插件中已初始化的元素添加一个类或类似的内容,然后在插件中检查,这是避免双重初始化的常用方法