【问题标题】:Initialize JQuery plugin from data attributes?从数据属性初始化 JQuery 插件?
【发布时间】:2016-01-03 21:15:18
【问题描述】:

您可以在没有任何 javascript 的情况下初始化引导下拉菜单。您也可以手动初始化它。

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

var settings = $.extend(true, {}, defaults, options, $self.data());

我的插件像任何普通插件一样被初始化。

$('ul.dropdown.users-list').awesomeplugin({/* ... */});

什么是让它自动初始化的正确方法,但如果手动初始化它也不会重复,就像引导下拉菜单的工作方式一样?

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

$(function(){
 $('[data-myawesomeplugin]').each(function(){
     $(this).myawesomeplugin();
 });
});

但是如果有人决定手动初始化,初始化不会发生两次吗?

【问题讨论】:

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

标签: javascript jquery twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多