У меня есть базовый класс плагинов, который я использую в качестве основы для всех своих плагинов jQuery. Он похож на виджет пользовательского интерфейса jQuery, но для меня выполняет гораздо более тяжелую работу.
Теперь я хочу сопоставить значения атрибутов data-
из прикрепленного элемента с любыми параметрами, переданными плагину. Это позволит подключаемому модулю не только принимать типичный объект options
, но также разрешать переопределять значения, управляемые данными, для отдельных элементов (общее требование).
У меня проблема в том, что мои свойства option обычно имеют смешанный регистр, например. MaxHeight
, но, видимо, спецификация HTML разрешает использовать только символы нижнего регистра в именах data-
атрибутов.
В качестве тестового стенда: http://jsfiddle.net/TrueBlueAussie/tfkrwq09/1/
HTML:
<div id="test" data-DataTest="test2"></div>
jQuery:
var object = {
DataTest: 123
};
$.each($('#test').data(), function (k, v) {
object[k] = v;
});
console.log(object.datatest); // test
console.log(object.DataTest); // 123
Желаемый результат:
console.log(object.datatest); // undefined
console.log(object.DataTest); // test
Мне нужны способы сопоставления атрибутов data-
со свойствами смешанного регистра, сохраняя при этом текущую скорость и простоту (если возможно).
data()
, кажется, что если вы сами установите данные, jQuery извлечет их так, как они были написаны. Пример:$('#test').data({TEST: 1});
, затем выполнитеconsole.log(object.TEST);
и вы получите1
. - person SparoHawk   schedule 18.12.2014data-data-test="test2"
РЕДАКТИРОВАТЬ: на самом деле не дляDataTest
, но именно поэтому имя свойства не должно начинаться с заглавной буквы - person A. Wolff   schedule 18.12.2014that's-a-great-solution
... Только что попробовалdata--data-test
, а также получил заглавную букву в верхнем регистре... пожалуйста, напишите как ответ :) - person Gone Coding   schedule 18.12.2014