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

标签 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);
        }
    });
};

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

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

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

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

最佳答案

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

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

关于javascript - jQuery 插件,获取原始元素的 .data(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117531/

相关文章:

javascript - 如何仅使用javascript获取子元素文本

javascript - 使用 reader.readAsArrayBuffer(file) 获取图像 base64

jquery - 创建一个向下钻取菜单

javascript - HTML5 FormData 通过 JQuery 发送空对象

具有适当后退按钮支持的 jQuery Lightbox

javascript - 检查互联网的 Jquery/Ajax 代码

javascript - 这条线是什么意思? jQuery Hilghlight 插件中的 "this.parentNode.firstChild.nodeName"

javascript - jQuery:从用户控件捕获点击事件

JavaScript 变量作用域 - 持久状态?

javascript - 将来自多个 div 的代码转换为使用 Ajax