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

Posted

技术标签:

【中文标题】jQuery 插件,获取原始元素的 .data()【英文标题】:jQuery plugin, get .data() for original element 【发布时间】:2012-08-20 11:56:56 【问题描述】:

我创建了一个下拉 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 而不是类来选择元素来获取数据?

【问题讨论】:

这个功能怎么用? $('select').dropdown() ? 我将它与类选择器 "$('.select').dropdown(); 一起使用,如果我按类查找下拉列表 请提供更多代码。我执行您的代码并遇到此错误:$.dropdown is not a constructor 我不得不发布整个插件 【参考方案1】:

嗯,你真的没有很多选择。在你的$.dropdown 构造函数内部,只需再创建一个对this 实例的数据引用。反正它很便宜,因为它只是一个对象引用:

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

【讨论】:

以上是关于jQuery 插件,获取原始元素的 .data()的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 1.7+ 中等效的 jQuery livequery 插件

获取和设置元素的jQuery插件#样式.显示

jquery miniui dialog 怎样实现?

利用ajax动态生成元素Jquery无法获取新创建的元素的解决方法

jquery——获取dom元素身上的绑定事件的问题

编写JQuery插件-3