这是将数据从DOM元素传递到附加事件的最佳实践:
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);发布于 2014-10-17 01:38:50
如果数据只需要在事件处理程序中使用,那么我将使用选项1来将数据保存为数据的使用者。如果您可能希望访问程序中其他地方的数据,请使用.data()存储数据,供任何人访问。
FYI是选项2的另一种形式,它的可读性更强,并且更符合大多数jQuery操作的阅读方式:
inputEL.data('myPluginInputKey', inputData);发布于 2014-10-17 01:53:41
您可以让jQuery手动地将数据与DOM元素关联,或者必须这样做。
如果要创建插件,请将输入元素附加到插件的实例:
我不确定示例代码的上下文,但大致如下:
this.pluginInput = {
elem: this.$el.find('.myplugin-input'),
data: {
someData : 'xyz',
otherData : 50
}
}使用jQuery data跟踪与每个元素关联的数据很难维护。从元素data创建对插件的引用也有点奇怪。只有当您需要从DOM中收集插件实例时,您才真正想要这样做。
如果将事件绑定到插件构造函数中(或附加用于初始化事件的任何方法),则从事件中收集此数据很简单。
Plugin.prototype.init = function () {
var _this = this;
this.pluginInput.elem.on('keyup', function () {
// use _this.pluginInput.data
});
}https://stackoverflow.com/questions/26416383
复制相似问题