Помню, ранее сталкивался с проблемой, когда attr() не отрабатывал так, как нужно. Тогда не разобрался и просто переписал кусок на ванильном JS. Сейчас снова с этой же проблемой столкнулся. Попытался разобраться. Разобрался.
Суть:
Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior.
Это из оф. документации, до этого пытался просто гуглить/тестить, но безуспешно.
Т. е. просто бага. Причем не всегда путаются атрибуты со стилями, в контексте того же SVG при попытке затребовать значение атрибута width отдается не то чтобы даже стиль, а вообще непонятно что (object SVGAnimatedLength).
В jQuery 1.6+ пофиксили, но писать сейчас приходится под 1.4, т. к. именно эта версия родная для Drupal 7.
Решил что называется отрефакторить код, переписав все на jQuery, дескать проще будет и кода меньше получится. Однако пока только сплошные проблемы.