Содержит ли element.attributes пользовательские атрибуты данных? - PullRequest
1 голос
/ 13 апреля 2011

Мне было интересно, есть ли в браузере согласованность, какие элементы хранятся в массиве атрибутов.

Найдены ли все атрибуты "data-xxx" через "$ ('# elm') [0] .attributes"?

Например, содержит ли коллекция атрибутов все перечисленные ниже атрибуты данных:

 <input type="submit" value="Go" data-validation="foo" data-widgetId="bar">

Мне нужен способ перемещения всех соответствующих атрибутов из ввода [type = submit] в элемент кнопки с помощью jQuery.

Ответы [ 3 ]

1 голос
/ 19 апреля 2011

Я думаю, что атрибуты данных присутствуют во всех браузерах, даже если они игнорируются в случае браузеров, отличных от HTML 5

Здесь кому-то удалось прочитать их из элемента в IE6 Сделать пользовательские данные HTML5атрибуты «работают» в IE 6?

@ отредактированный ответ

только что обнаружил, что jquery data () работает с браузерами html5 и не html5;

http://www.sluniverse.com/ffn/index.php/2011/02/using-html5s-data-attributes-with-jquery/

example of looping through all data attributes;

<input type="text" id="x" data-a="valuea", data-b="valueb" />
$.each($('#x').data(), function(key, value) { 
  console.log('key is', key);
  console.log('value is', value);
});            

prints         

key is a
value is valuea
key is b
value is valueb
0 голосов
/ 19 апреля 2011

Не многие браузеры в настоящее время имеют встроенную поддержку свойства dataset, которое является официальным стандартным способом доступа к атрибутам data-*. Со временем это улучшится, но пока он недостаточно хорошо поддерживается для использования (см. http://caniuse.com/#search=dataset).

Однако, как вы знаете, все браузеры могут поддерживать data-* как обычные атрибуты. Но в отсутствие свойства dataset не существует простого способа получить все атрибуты data-*.

К счастью, есть плагин JQuery, который обеспечивает эту функциональность. Смотрите здесь для получения дополнительной информации: http://www.orangesoda.net/jquery.dataset.html

0 голосов
/ 13 апреля 2011

Информация о поддержке браузера относительно атрибутов. 1001 * ЗДЕСЬ

    var attrs = $("input[type=submit]")[0].attributes;
    for(var i=0;i<attrs.length;i++) {
        alert(attrs[i].nodeName + " = " + attrs[i].nodeValue);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...