Вот как работает JQuery, это ожидаемое поведение.
$()
превращает элемент DOM в объект jQuery (который претендует на массив), который представляет собой набор элементов (элементов) DOM.
В вашем ответе вам не нужно использовать $()
.
Поскольку this
является элемент, который вы хотите, вы можете просто сделать:
template.find('.userPhoto img').error(function() {
this.src = '/images/default.png';
}).attr('src', image);
Или вы можете сделать это:
template.find('.userPhoto img').error(function() {
$(this).attr('src', '/images/default.png';);
}).attr('src', image);
$(this).attr('src'
изменит атрибут всех элементов (в вашем случае , один) в множестве.
Потому что это то, что означает $ (...). – asawyer
FWIW, '$ (this) [0] === this' – Alnitak
Откуда вы знаете, что это набор? «[0]» обращается к элементу DOM объекта jQuery, а не к первому элементу –