jquery - 如何在django中使用jquery更改多个图像src

标签 jquery django django-templates

我正在尝试根据用户名中找到的第一个字母更改每个评论的图像 src

{% for comment in articles.comments.all %}
      <div class="comments py-2 my-3">
           <div class="comments-img-wrapper">
                <img src="" class="comment-image" alt="">
           </div>
           <div class="comments-details">
                 <h5 class="comment-user-name">{{comment.user}} <span class="float-right date">{{comment.created}}</span></h5>
                 <p>{{comment.body}}</p>
            </div>
       </div>
       {% empty %}
       <p>there are no comments</p>
{% endfor %}

我使用的jquery代码是这个

<script>
    $(".comment-image").each(function(){
        username = $('.comment-user-name').text();
        usernameFirstletter = username.charAt(0).toUpperCase();
        console.log(usernameFirstletter)
        $(".comment-image").attr('src', '/static/img/avatars/' + usernameFirstletter + '.svg');
      });
</script>

但由于某种原因,它不断重复剩余评论的第一个评论的图像,任何人都可以帮忙

最佳答案

您正在使用$('.comment-user-name').text()获取始终在集合中首先返回文本内容的用户名,与当前 img 无关回调中的标记。

所以你需要获取.comment-user-name与当前相关img标签,为此获取公共(public)父级( .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>

关于jquery - 如何在django中使用jquery更改多个图像src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55974881/

相关文章:

python - 如何使用 django.forms Textarea 添加额外字段

python - Django 客户端不会在测试中删除

django - 索引错误 : tuple index out of range

jquery - 为什么这个jquery简单的转移效果不起作用?

javascript - jQuery 和 HTML5 无值(数据)属性

django - 如何在 Django 3 中使用 RelatedFieldWidgetWrapper

python - 上下文变量不会显示在 Django 模板中

python - 有没有办法在 Django 中同时循环两个列表?

jquery - 如何将请求数据传递到 JQuery.ajax 中的 Complete 事件中

javascript - Swiper.js - 未捕获的类型错误 : Cannot read property 'params' of null