我已经创建了一个下拉式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而不是类来在初始化后选择元素来获取数据?
答案 0 :(得分:0)
嗯,你真的没有多少选择。你内部的$.dropdown
构造函数只需要创建一个对this
实例的数据引用。它无论如何都相当便宜,因为它只是一个对象参考:
$.dropdown = function(element, options) {
// ... newElement is what replaces original select
newElement.data('dropdown', this);
};