javascript中的错误 - 用链接替换哈希标记

时间:2017-08-31 17:40:24

标签: javascript python html django

我遇到以下问题:

我有一个简单的 View.py:

def Article_view_2(request):
    return render_to_response('articles.html', {'articles': Event.objects.all()})

有一个 HTML 部分,我从模型中输出所有数据以获取新闻:

{% block name %}
        {% for event in articles %}
            <img src="{{ event.cover_event.url}} " width="300px">
            <h4>{{ event.author }}</h4>
            <h6>{{ event.event_date|date:'F j' }}</h6>
            <h4>{{ event.event_title }}</h4>
            <div class="item">
                <p>{{ event.event_text }}</p>
            </div>
            <p>{{ event.event_a }}</p><p>{{ event.event_b }}</p><p>{{ event.event_c }}</p>
            <h1>{{ event.all_rate }}</h1>
            <h2>{{ event.index }}</h2>
    {% endfor %}
{% endblock  %}

我还使用 javascript 代码将 #hastags 替换为链接:

var str = $('.item p').html(),
  regex = /(?:\s|^)(?:#(?!\d+(?:\s|$)))(\w+)(?=\s|$)/gi;

function replacer(hash){
  var replacementString = $.trim(hash);
  return ' <a href="https://www.example.com/'+ replacementString +'" target="_blank">' + replacementString + '</a>';
}
$('.item p').html( str.replace( regex , replacer ) );

但是当我打开页面时,我会得到相同的描述 - {{event.event_text}} - 适用于所有帖子。

我的错误是什么?

1 个答案:

答案 0 :(得分:1)

选择器会将相同的代码应用于所有目标项目,您可以使用下面的循环逐个替换链接:

$( '.item p' ).each(function() {
  $(this).html($(this).html().replace(regex, replacer));
});