Skip to content

Instantly share code, notes, and snippets.

@ianpgall
Last active December 20, 2015 00:18
Show Gist options
  • Save ianpgall/6040362 to your computer and use it in GitHub Desktop.
Save ianpgall/6040362 to your computer and use it in GitHub Desktop.
JavaScript function to manipulate an Element's dataset/data-* attributes (detects native browser support)
var DataSet = (function () {
"use strict";
var E, toCamelCase, getter, setter;
E = document.createElement("div");
if (E.dataset && !E.hasOwnProperty("dataset")) {
toCamelCase = (function () {
var re = /-([a-z])/g;
return function (str) {
str = str.replace(re, function (match, lower) {
return lower.toUpperCase();
});
};
}());
getter = function (element, key) {
return element.dataset[toCamelCase(key)];
};
setter = function (element, key, value) {
element.dataset[key] = value;
};
} else {
getter = function (element, key) {
return element.getAttribute("data-" + key);
};
setter = function (element, key, value) {
element.setAttribute("data-" + key, value);
};
}
return {
"get": getter,
"set": setter
};
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment