Вы используете $('.comment-user-name').text()
для получения имени пользователя, которое всегда возвращает текстовое содержимое первым среди коллекции независимо от текущего тега img
в обратном вызове.
Таким образом, вам нужно получить .comment-user-name
, связанный с текущим тегом img
, для этого получите общего родителя (.comments
) и получите его. В дополнение к этому, вы должны обновить src
атрибут текущего элемента вместо $(".comment-image").attr(...)
, что обновляет атрибут всех элементов.
<script>
$(".comment-image").each(function(){
let username = $(this).closest('.comments').find('.comment-user-name').text();
let usernameFirstletter = username.charAt(0).toUpperCase();
console.log(usernameFirstletter)
$(this).attr('src', '/static/img/avatars/' + usernameFirstletter + '.svg');
});
</script>
Вы можете сделать это еще проще, используя метод attr()
с обратным вызовом, который перебирает элементы внутри и обновляет возвращаемое значение обратного вызова.
<script>
$(".comment-image").attr('src', function(){
let username = $(this).closest('.comments').find('.comment-user-name').text();
let usernameFirstletter = username.charAt(0).toUpperCase();
return '/static/img/avatars/' + usernameFirstletter + '.svg';
});
</script>