なぜ「data-」属性が必要なのですか?http://api.jquery.com/data/
これらは、他の問題の中でも特にメモリリークを引き起こす可能性があります。jQueryにはすでに「データ」が組み込まれており、機能しています。データ属性を設定するのではなく、JavaScriptを使用してDOMセレクターに関連付けられたデータを格納するためのより優れたより効率的な手段を使用します。
何らかの理由で「データ」が組み込まれていない場合は、jQueryを更新する必要があります。これがシムです。ほとんどの場合、それがどのように機能するかを確認できます。これは完全なシムではなく、データのキーの要素のセレクターを使用してデータを格納するための非常に簡単な方法です。要素が削除されたときにデータを削除しないため、実装によってメモリリークが発生する可能性があります。ただし、これは単なる例です。
if ($(window).data === undefined) {
$.fn.data = (function () {
var storage = {};
return function data (name, val) {
var id = $(this).selector;
storage[id] = storage[id] || {};
if (val === void 0) {
return storage[id][name];
}
storage[id][name] = val;
return $(this);
}
}());
}
var foo = $('section').data('role','page');
var bar = $('article').data('role','content');
foo.text(foo.data('role'));
bar.text(bar.data('role'));
http://jsfiddle.net/dETuh/1/
アラートが実行されないので、私のシムも使用されていないことに注意してください。