jQuery插件,获取原始元素的.data()

时间:2012-08-24 22:40:15

标签: javascript jquery jquery-plugins

我已经创建了一个下拉式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);
        }
    });
};

我也将给予select元素的任何类复制到替换div

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

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

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

1 个答案:

答案 0 :(得分:0)

嗯,你真的没有多少选择。你内部的$.dropdown构造函数只需要创建一个对this实例的数据引用。它无论如何都相当便宜,因为它只是一个对象参考:

$.dropdown = function(element, options) {
    // ... newElement is what replaces original select
    newElement.data('dropdown', this);
};