Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery只更新同一div类中的一个元素_Javascript_Jquery_Html_Django_Django Templates - Fatal编程技术网

Javascript 使用jQuery只更新同一div类中的一个元素

Javascript 使用jQuery只更新同一div类中的一个元素,javascript,jquery,html,django,django-templates,Javascript,Jquery,Html,Django,Django Templates,每当用户喜欢一篇文章并在文章上显示喜欢的数量时,我都会尝试更新DOM。然而,我意识到我的功能将更新页面上的所有类,而不仅仅是喜欢的某个帖子(当用户单击thmbs up时,所有向上竖起的按钮都变为向下竖起) 我的更改功能类似: function like_post() { // newly added $('#like-section #likeBtn').on("click", function (e) { e.preventDefault

每当用户喜欢一篇文章并在文章上显示喜欢的数量时,我都会尝试更新DOM。然而,我意识到我的功能将更新页面上的所有类,而不仅仅是喜欢的某个帖子(当用户单击thmbs up时,所有向上竖起的按钮都变为向下竖起)

我的更改功能类似:

function like_post() {
        // newly added
        $('#like-section #likeBtn').on("click", function (e) {
            e.preventDefault();
            if($("#like-section #likeBtn i").hasClass("fa-thumbs-up")){
                ($("#like-section #likeBtn i").removeClass("fa-thumbs-up"))
                ($("#like-section #likeBtn i").addClass("fa-thumbs-down"))
            } else {
                ($("#like-section #likeBtn i").removeClass("fa-thumbs-down"))
                ($("#like-section #likeBtn i").addClass("fa-thumbs-up"))
            }
        });
        // end
}
Django中的my posts HTML模板:

{% load static %}
<link rel="stylesheet" href="{% static 'css/post/style.css' %}">
<script src="{% static 'js/like-api.js' %}"></script> 
<script src="{% static 'js/post.js' %}"></script>
{% for post in posts %}
<script>
  $(document).on('click', '.post-detail-clickable-details-view', function () {
    var url = $(this).attr("data-url")
    document.location.href = url 
});
</script>
  <div class="row ml-2">
    <div class="col-sm-2">
      <div class="float-right mb-3 mt-3">
        <div>
          <img class="img-create-post rounded-circle mr-2" src="https://mdbootstrap.com/img/Photos/Avatars/avatar-5.jpg"
          alt="Profile image">
        </div>
        <div>
          <p class="text-muted post-card-date small mr-2">{{ post.get_created_on }} ago</p>
        </div>
      </div>
    </div>
    <div class="col-md-10" style="margin-left: -1.6rem;">
      <div class="card rounded-0 mb-3 mt-3">
        <div class="card-header bg-transparent" style="height: 3rem;">
          <h5 style="margin-bottom: 0px;">
            <a class="text-dark" style="text-decoration: none;" href="{% url 'home:post-detail' post.guid_url  %}">{{ post.title }}</a>
                <span class="small text-muted">@{{ post.author.username }}</span> 
          </h5>      
        </div>
        <div class="card-body post-detail-clickable-details-view text-dark" data-url="{% url 'home:post-detail' post.guid_url  %}" 
                style="margin-top:-0.5rem;">
          <a id="post-detail-view-link" href="{% url 'home:post-detail' post.guid_url %}"></a>
          <p class="mr-1 text-dark font-weight-bolder">{{ post.author.first_name }} {{ post.author.last_name }}</p>
          <p class="card-text pt-2" style="margin-top: -0.9rem;">{{ post.content }}</p>
        </div>
       <hr style="margin: 0;">
          <div class="d-flex align-items-center justify-content-between" >
            <div class="row mx-1">
              <div id="like-section" class="px-1">
                {% include 'home/posts/likes.html' with post=post %}
              </div>
              <div class="px-1"> 
                <a class="btn btn-md" href="{% url 'home:post-detail' post.guid_url %}">
                  <span class="text-secondary">
                    <i class="fas fa-comment"></i> {{ post.comments.count }}
                  </span>
                </a>
              </div>
            </div>
            <div> 
              <a class="btn btn-md" href="#">
                <span class="text-secondary">
                  <i class="fas fa-share-square"></i>
                </span>
              </a>
            </div>
          </div>
      </div>
    </div>
  </div>
{% empty %}
<div class="d-flex justify-content-center">
  <h5 class="h5 font-weight-lighter my-3 text-muted">No posts to show</h5>
</div>
{% endfor %}
}))

编辑:jsiddle链接:
这似乎正在起作用

请考虑以下示例

小提琴:

HTML

<div class="like-section">
  <button type="submit" class="likeBtn btn btn-md">
    <span class="text-secondary">
      <i class="red">Button</i>
      <span class="like-count">
        3
      </span>
    </span>
  </button>
</div>

<div class="like-section">
  <button type="submit" class="likeBtn btn btn-md">
    <span class="text-secondary">
      <i class="blue">Button</i>
      <span class="like-count">
        2
      </span>
    </span>
  </button>
</div>

<div class="like-section">
  <button type="submit" id="likeBtn" class="btn btn-md">
    <span class="text-secondary">
      <i class="red">Button</i>
      <span class="like-count">
        1
      </span>
    </span>
  </button>
</div>

使用类将允许您对元素进行分组。您可以使用
.find()
或速记,
$(“i”,this)
。它与
$(this)相同。查找(“i”)
,稍短一些。

您的选择器似乎有问题:
$(“#like section#likeBtn”)
这似乎不存在。{%include'home/posts/likes.html'with post=post%}是否存在于我的代码中我正在尝试仅更新该div中的子元素您的代码中是否有多个
id=“like section”
,我看不到
{%include'home/posts/likes.html'with post=post%}
会产生什么结果。请提供一个最小的,可复制的例子:是的,我有它的likes.html文件。我正在建立一个JSFIDLE现在我会尽快发送
$('#like-section #likeBtn').on("click", function (e) {
    e.preventDefault();
    if($(this).find("#i").hasClass("fa-thumbs-up")){
        ($(this).find("i").removeClass("fa-thumbs-up").addClass("fa-thumbs-down"))
    } else {
        ($(this).find("i").removeClass("fa-thumbs-down").addClass("fa-thumbs-up"))
}
<div class="like-section">
  <button type="submit" class="likeBtn btn btn-md">
    <span class="text-secondary">
      <i class="red">Button</i>
      <span class="like-count">
        3
      </span>
    </span>
  </button>
</div>

<div class="like-section">
  <button type="submit" class="likeBtn btn btn-md">
    <span class="text-secondary">
      <i class="blue">Button</i>
      <span class="like-count">
        2
      </span>
    </span>
  </button>
</div>

<div class="like-section">
  <button type="submit" id="likeBtn" class="btn btn-md">
    <span class="text-secondary">
      <i class="red">Button</i>
      <span class="like-count">
        1
      </span>
    </span>
  </button>
</div>
$(function() {
  $('.like-section').on("click", ".likeBtn", function(e) {
    var like_count = parseInt($(".like-count", this).text());
    e.preventDefault();
    if ($("i", this).hasClass("blue")) {
      like_count++;
      $("i", this).removeClass("blue").addClass("red");
      $(".like-count", this).text(like_count);
    } else {
      like_count--;
      $("i", this).removeClass("red").addClass("blue");
      $(".like-count", this).text(like_count);
    }
  });
});