Лучший ответ, который я могу предложить, это «так работает API». Я согласен с вами, что такие вещи, как "attr" и "val" были бы более последовательными, если бы они возвращали массивы (по крайней мере, в случае, когда селектор соответствует нескольким элементам).
Вы можете получить этот эффект с помощью $.map
, если хотите:
var attrs = $.map($('div.something'), function(element) {
return $(element).attr('whatever');
});
Теперь "attrs" будет массивом. Вы также можете написать свою собственную функцию.
В любом случае важно отметить, что есть массивы, а затем есть «объекты jQuery». На самом деле никогда не будет смысла использовать attr или val (или что-то в этом роде) в middle набора операций jQuery, если вы об этом думаете.