2

我创建了一个下拉 jquery 插件。这隐藏了一个常规的 html 选择并添加了一个 div 和一些子 div 作为选项来显示。

按照一般经验法则,我正在初始化插件,如下所示:

$.fn.dropdown = function (options) {
    return this.each(function() {
        if (undefined === $(this).data('dropdown')) {
            var dropdown = new $.dropdown(this, options);
            $(this).data('dropdown', dropdown);
        }
    });
};

我还将给选择元素的任何类复制到替换 div

当试图通过使用类作为选择器来获取元素的数据时,选择器显然是在元素数组中返回生成的 div。

这会导致 div 出现“未定义数据”错误。

我应该从插件中更改某些内容,还是期望使用插件的人通过使用 id 而不是类在初始化后选择元素来获取数据?

4

1 回答 1

0

好吧,您在这里真的没有太多选择。在您的$.dropdown构造函数内部,只需再创建一个对this实例的数据引用。无论如何它都很便宜,因为它只是一个对象引用:

$.dropdown = function(element, options) {
    // ... newElement is what replaces original select
    newElement.data('dropdown', this);
};
于 2015-12-24T10:16:59.407 回答