Является ли jQuery внутренне преобразовывать ключи атрибутов данных HTML5 в нижний регистр?

Я стараюсь максимально соответствовать стилю кодирования JavaScript для моего стиля кодирования Zend, который использует camelCase. Итак, в моих атрибутах данных HTML5 я называю их как в этом примере:

<button class="action" data-actionClass="user" data-actionMethod="delete" data-actionRequest="/user/delete/user-id/1" data-actionComplete="{reload:users}">Delete User #1</button>
<div id="users" data-reloadRequest="/user/index"> ... </div>

Довольно ненавязчивый способ использовать JQuery для действий, но когда я вызываю $('. action'). data(), имена атрибутов преобразуются в нижний регистр.

Любые обходные пути для этого?

Я никогда, хотя переменные JavaScript должны иметь тире в них, и я не могу понять, почему jQuery внутренне делает это для меня? Или, может быть, это HTML5?

Ответ 1

Если вы используете

data-action-method="delete"

то вы можете получить доступ к атрибуту с помощью

$('.action').data('actionMethod')

Это часть HTML-DOM API:

Пользовательские атрибуты данных преобразуются в ключ для DOMStringMap со следующими правилами:

  • удаляется любая тире (U + 002D);
  • любая буква, следующая за тире (U + 002D), перед ее удалением устанавливается в ее верхнем регистре.

Ответ 2

Прежде всего, см. эту часть исходного кода JQuery, предполагается, что у вас есть атрибуты нижнего регистра.

Во-вторых, по соглашению все атрибуты HTML5 должны быть строчными, см. http://www.htmlbasictutor.ca/html-tag-attributes.htm

Наконец, будьте осторожны, вы можете столкнуться с новыми проблемами, если вы настаиваете на использовании верхних регистров, см. Django: Невозможно добавить имя атрибута UPPERCASE в элемент ввода HTML