Документация jQuery для метода attr
гласит, что:
Значения атрибута являются строками, за исключением нескольких атрибутов, таких как value и tabindex.
И это действительно так.Рассмотрим следующий элемент:
<input type="text" id="example" tabindex="3">
Следующая строка действительно показывает «число», а не «строку»:
alert(typeof $("#example").attr("tabindex")); //Number
Теперь меня смущает то, что при использованииМетод DOM getAttribute
, вы получите другой результат:
alert(typeof $("#example")[0].getAttribute("tabindex")); //String
Глядя на источник jQuery для метода attr
, выясняется, что jQuery просто возвращает то, что возвращает getAttribute
, так почемуразница?Вот соответствующие строки источника jQuery :
ret = elem.getAttribute( name );
// Non-existent attributes return null, we normalize to undefined
return ret === null ?
undefined :
ret;
А вот скрипка , чтобы продемонстрировать проблему.Просто чтобы еще больше запутать вопросы, я попробовал это в Chrome 15, Firefox 8, IE8 и IE7, и все они ведут себя так, как описано выше, за исключением IE7, который предупреждает «число» для обоих (что я и ожидал бы получить).