jQuery.attr () гарантирует нижний регистр? - PullRequest
6 голосов
/ 22 июля 2010

Гарантирует ли $(selector).attr(name), что результат будет в нижнем регистре, если атрибут найден?

Ответы [ 3 ]

3 голосов
/ 22 июля 2010

Возвращает значение в любом случае, если оно было установлено.

<div class="sOmEcLaSs">content</div>

.

alert( $('div').attr('class')​​​​ );​​​​  // will alert sOmEcLaSs

Если вы хотите преобразовать в нижний регистр, вы можете использовать .toLowerCase().

alert( $('div').attr('class').toLowerCase() );​​​​  // will alert someclass

Код для операторов возврата jQuery attr (не Sizzle):

http://github.com/jquery/jquery/blob/1.4.2/src/attributes.js#L308

или

http://github.com/jquery/jquery/blob/1.4.2/src/attributes.js#L325

2 голосов
/ 22 июля 2010

Нет, потому что .attr вызывает метод JavaScript .getAttribute без каких-либо параметров.Как вы можете видеть в приведенном ниже коде.

getAttribute по умолчанию равен 0, который не зависит от регистра, поэтому он возвращает именно то, что находит.

0 голосов
/ 22 июля 2010

jQuery не может полагаться на поиск атрибутов с учетом регистра и по-прежнему совместим с браузерами.В более старой версии IE DOM я напоминаю, что все теги и атрибуты хранятся и возвращаются в верхнем регистре;поэтому тег <div id="mydiv"> отображается как <DIV ID=mydiv>.Поэтому в Netscape или Firefox имя атрибута будет id, а в IE - ID.Но даже с динамически созданными элементами, которые хранятся в нужном регистре, есть несоответствия только в IE.Например, IE6 и IE8 ведут себя совершенно по-разному с getAttribute().Сравните:

<div></div>

var myDiv = document.getElementsByTagName('div')[0];
myDiv.setAttribute('id','id1');
myDiv.setAttribute('ID','id2');
console.log(x.getAttribute('ID')); // IE6, return "id1", IE8, returns "id2"
console.log(x.getAttribute('ID',true)); // IE6, return "id2", returns "id2"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...