【问题标题】:Javascript, access each object inside one main object - module patternJavascript,访问一个主要对象中的每个对象 - 模块模式
【发布时间】:2016-05-18 10:27:43
【问题描述】:

我创建了一个小组件,它遍历所有选择元素并从中创建无序列表,以便我可以轻松地设置它的样式。一切都如我所愿。这是脚本: https://github.com/goranefbl/softdrop

你这样开火:

SoftDrop.init({
  selector:'input_select',
  mobile:true
});

及其遍历每个“input_select”元素并为其创建新节点。但这都是一个单一的对象,我没有办法访问例如特定的选择元素,如果我想将一个项目推送给它,或者用一些公共方法关闭它。

对于每个元素,我都添加了 data-softdrop="i" ,这样我就可以轻松地定位它:

document.querySelectorAll("[data-softdrop='i']")

它有效。但是,如果我想从组件内部执行此操作,则如下所示:

var selects = SoftDrop.init({
      selector:'input_select',
      mobile:true
    });

selects.data('something').open();

我会怎么做呢?我会在顶部和 forEach 调用期间创建一些对象数组,将其推到那里,然后如何访问它?能够在特定的选择元素上使用公共方法。

谢谢

【问题讨论】:

    标签: javascript singleton javascript-objects


    【解决方案1】:

    实现此目的的一种方法是在组件内创建一个data 对象,并将每个条目作为属性添加到该对象,例如像这样:

    data['something'] = myElement;
    

    然后,稍后,您可以再次访问该元素并在其上调用方法,例如

    data['something'].open();
    

    这就是你的想法吗?

    【讨论】:

    • 是的,所以你的意思是,每个元素都可以像 data['element_1']、data['element_2'] 等......并像那样访问?如果其他一些插件正在使用 data[] 可能会造成全球性问题?
    • 我不知道这是否会导致问题 :-) 您可以随时将 data 重命名为不与其他插件冲突的名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2020-09-03
    相关资源
    最近更新 更多