首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery最佳实践--向元素中添加数据或将其传递给事件

jquery最佳实践--向元素中添加数据或将其传递给事件
EN

Stack Overflow用户
提问于 2014-10-17 01:09:09
回答 2查看 108关注 0票数 0

这是将数据从DOM元素传递到附加事件的最佳实践:

代码语言:javascript
运行
复制
var input = '<input type="text" class="myplugin-input">';
this.$el.append(input);

var inputEl = this.$el.find('.myplugin-input'),
    inputData = {
        pluginObj   : this,
        someData    : 'xyz',
        otherData   : 50            
    };

//* Option 1 - is this best practice?
inputEl.on('keyup', inputData, this.inputHandler);

//* Option 2 - is this best practice?
$.data(inputEl, 'myPluginInputKey', inputData);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-17 01:38:50

如果数据只需要在事件处理程序中使用,那么我将使用选项1来将数据保存为数据的使用者。如果您可能希望访问程序中其他地方的数据,请使用.data()存储数据,供任何人访问。

FYI是选项2的另一种形式,它的可读性更强,并且更符合大多数jQuery操作的阅读方式:

代码语言:javascript
运行
复制
inputEL.data('myPluginInputKey', inputData);
票数 0
EN

Stack Overflow用户

发布于 2014-10-17 01:53:41

您可以让jQuery手动地将数据与DOM元素关联,或者必须这样做。

如果要创建插件,请将输入元素附加到插件的实例:

我不确定示例代码的上下文,但大致如下:

代码语言:javascript
运行
复制
this.pluginInput = {
   elem: this.$el.find('.myplugin-input'),
   data: {
      someData    : 'xyz',
      otherData   : 50
   } 
}

使用jQuery data跟踪与每个元素关联的数据很难维护。从元素data创建对插件的引用也有点奇怪。只有当您需要从DOM中收集插件实例时,您才真正想要这样做。

如果将事件绑定到插件构造函数中(或附加用于初始化事件的任何方法),则从事件中收集此数据很简单。

代码语言:javascript
运行
复制
Plugin.prototype.init = function () {

   var _this = this;

   this.pluginInput.elem.on('keyup', function () {
      // use _this.pluginInput.data
   });

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26416383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档