Skip to content

Instantly share code, notes, and snippets.

@DamianMullins
Last active January 13, 2016 14:51
Show Gist options
  • Save DamianMullins/b856fa096b89a5c54529 to your computer and use it in GitHub Desktop.
Save DamianMullins/b856fa096b89a5c54529 to your computer and use it in GitHub Desktop.
Return data attribute value from a given element. Falls back to `getAttribute()` in older browsers.
/**
* Return data attribute value from a given element. Falls back to `getAttribute()` in older browsers.
* @example
* let value = getDataAttributeValue(element, 'component-name');
* @example
* let value = getDataAttributeValue(element, 'componentName');
*/
export default function getDataAttributeValue(element, dataName, defaultDataValue = '') {
const datasetSupported = element.dataset !== undefined;
if (datasetSupported) {
let name = dataName.replace(/-([a-z])/g, (name) => return name[1].toUpperCase());
return element.dataset[name] || defaultDataValue;
} else {
let name = "data-" + dataName.replace(/[A-Z]/g, "-$&").toLowerCase();
return element.getAttribute(name) || defaultDataValue;
}
};
/**
* Return data attribute value from a given element. Falls back to `getAttribute()` in older browsers.
* @example
* var value = getDataAttributeValue(element, 'component-name');
* @example
* var value = getDataAttributeValue(element, 'componentName');
*/
export default function getDataAttributeValue(element, dataName) {
var datasetSupported = element.dataset !== undefined;
if (datasetSupported) {
var name = dataName.replace(/-([a-z])/g, function(name) { return name[1].toUpperCase() });
return element.dataset[name] || '';
} else {
var name = "data-" + dataName.replace(/[A-Z]/g, "-$&").toLowerCase();
return element.getAttribute(name) || '';
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment