2012-04-05 10 views
0

jqueryプラグインオプションに加えて、これらの値をhtml5データ属性で上書きします。Html 5データ属性をjqueryプラグインオプション形式に変換


これはoptionisのために所望の形式である:私はこのようなデータ属性何かフォーマットしたかった

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

json文字列のようにフォーマットされたオブジェクトを属性に渡すだけで、jQueryデータが解析します。

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

また、これは非常にきれいイマイチとHTMLでのonclickイベントのことを思い出すupdated fiddle

+0

作品:

プラグインは、このような何か(拡張jqueryのプラグイン定型)可能性がありその周りの私の指。ありがとう。 – Joonas

0

を参照してください。 data-test1 = "Lorem" & data-test2 = "Ipsum"にそれらを分けてみませんか?それは単純なものだと私はちょうど包むことができませんでした。..

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

イムなしの第一人者が、私のためによくこれは常に起こる

+0

理由は私がこのフォーマットを使用したいという欲望に由来します。オプションのためにhttp://pastebin.com/pnEeNje7を使用しています。これは、通常の方法と比べて少し綺麗で覚えやすいからです。特に名前が長く、複数のオプションがある場合は、http://pastebin.com/6DxTvgzL。 – Joonas

関連する問題