Html 5数据属性转换为jquery插件选项格式

时间:2012-04-05 18:39:51

标签: javascript jquery html5

除了jquery插件选项,我想用html5数据属性覆盖这些值。


这是选项所需的格式:

var defaults = {
   text: {
      color: 'red',
      opacity: 0.5
   },
   button: {
      width: 100,
      height: 30
   }
}

我想格式化数据属性,如下所示:

<div data-text="color:'red', opacity: 0.5"></div>

...但您无法读取此数据o.text.color,因为它根本不存在。但是o.text内有数据。

我如何设置数据属性的格式,以便我可以使用o.text.color获取值?

2 个答案:

答案 0 :(得分:2)

只需将格式化为json字符串的对象传递给属性,jQuery数据就会为你解析它。

<div class="test" data-test='{ "test1":"Lorem","test2":"Ipsum" }'></div>

另见updated fiddle

答案 1 :(得分:0)

这不是很干净,让我想起HTML中的onclick事件。为什么不把它们分成数据-test1 =“Lorem”&amp;数据TEST2 = “存有”?

插件可能是这样的(扩展jquery插件样板):

function Plugin( element, options, objD ) {
    this.element = element;
    this.options = $.extend( {}, defaults, options, objD );
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
}

$.fn[pluginName] = function ( options ) {
  return this.each(function () {
    if (!$.data(this, "plugin_" + pluginName)) {
        var objD = $(this).data();
        $.data(this, "plugin_" + pluginName, new Plugin( this, options, objD ));
    }
  });
};

我不是大师,但对我来说效果很好

相关问题