Javascript 如何为模板中显示的django对象生成唯一的div id

Javascript 如何为模板中显示的django对象生成唯一的div id,javascript,python,django,html,Javascript,Python,Django,Html,我正在做一个Django项目。我有一个显示所有可用帖子的模板。用户可以喜欢一个帖子。一切正常。但我面临一个问题。由于我使用ajax来更改用户单击like按钮时like按钮的状态,因此我注意到,当用户单击其中一篇显示文章的like按钮时,displayed posts对象的所有like按钮都会受到影响。我希望更改只发生在用户单击的like按钮上。并非显示的post对象的所有类似按钮 我的HTML模板的示例就是这样的 {% for post in allpost %} <!--for loop

我正在做一个Django项目。我有一个显示所有可用帖子的模板。用户可以喜欢一个帖子。一切正常。但我面临一个问题。由于我使用ajax来更改用户单击like按钮时like按钮的状态,因此我注意到,当用户单击其中一篇显示文章的like按钮时,displayed posts对象的所有like按钮都会受到影响。我希望更改只发生在用户单击的like按钮上。并非显示的post对象的所有类似按钮

我的HTML模板的示例就是这样的

{% for post in allpost %} <!--for loop to get all post objects in data base-->
{{post.tittle}}
{{post.content}}
{{post.type}}

<!-- like button  for users to be able to like post they fine interesting-->
<a  href="" data-href="{% url 'post:api_like' slug=post.slug %}">
<button id="like">like</button></a>
{% endfor %}
{%for allpost%}
{{post.title}}
{{post.content}
{{post.type}
{%endfor%}
所以你可以看到我喜欢的按钮id不是动态的,这就是我面临这个问题的原因之一。如何为for循环帖子中的每个like按钮生成动态按钮id


请帮助我指出,HTML中的标识符必须是唯一的,而不是指定一个CSS类,然后使用它来附加事件处理程序

如果您想持久化可以使用方法获取的任意数据,我建议您使用custom,而不是使用id属性


您可以使用
post
id作为后缀,这将使id唯一,并使用CSS类将事件处理程序附加到目标,因此我是否应该这样做,请用代码示例进行解释。您是否知道如何在jquery中获得动态创建的id?创建类似
的元素,然后附加事件处理程序
$(函数(){$('.like')。在('click',函数(){var id=this.id;});})上)
@Satpal,你应该把它作为答案放进去。模板中是为post生成的对象列表,这些对象中的每一个都有like按钮。我如何在jquery中使用为每个post like按钮生成的动态id来更改用户单击按钮时的按钮颜色。我只想要用户单击的like按钮来更改颜色或者。请帮帮我。当用户单击“相似”按钮时,我想要类似于instagram或facebook的东西,就像该帖子的“相似”按钮受到影响一样。@john在事件处理程序中使用当前元素上下文
this
$(this).addClass('your class)
它不起作用。当用户单击某篇文章的“相似”按钮时,我试图避免更改显示文章上所有“相似”按钮的颜色。如何使每个文章的“相似”按钮生成唯一的div id。因此,我的jquery代码可能只影响用户在该文章上单击的“相似”按钮。不是所有类似的按钮按钮。请帮帮我。就像我说的,它类似于instagram-Like按钮。就像用户点击帖子中的Like按钮一样。@john,看,试着玩一下它。这个答案是错误的。假设循环生成了5个按钮。那么所有5个按钮都将具有相同的“Like”类别在单击任何一个按钮时,jQuery都会考虑这5个按钮。
{% for post in allpost %} <!--for loop to get all post objects in data base-->

    <!-- like button  for users to be able to like post they fine interesting-->
    <button type="button" class="like" data-id="{{post.id}}">like</button>
{% endfor %}
$(function (){ 
    $('.like').on('click', function(){ 
        //Fetch Id 
        var id = $(this).data('id');                
    }); 
});