jquery - 在 jQuery 中将closest() 和 html() 放在一起的问题

标签 jquery html

我为我的项目创建了一个投票系统。我尝试使用下面的代码,该代码工作正常,但 html() 不适用于此。有人可以帮我解决这个问题吗?

$(document).ready(function() {
  $(".up").click(function() {
    $(this).addClass('active_vote');
    $('.active_vote').closest('.rating').html('18');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="suggestions">
  <li id="59">
    <div class="vote active ">
      <div class="support-feature-request-voted">
        <div class="rating">
          10
        </div>
        <span>Voted</span>
      </div>
    </div>
    <div class="title">hii</div>
    <div class="desc">desc1</div><br>
    <a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
  </li>
  <li id="60">
    <div class="vote active ">
      <div class="support-feature-request-voted">
        <div class="rating">
          8
        </div>
        <span>Voted</span>
      </div>
    </div>
    <div class="title">hello</div>
    <div class="desc">desc2</div><br>
    <a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
  </li>
</ul>

最佳答案

问题是因为 . rating 不是触发 click 事件的 .up 元素的父元素。

要解决此问题,您可以使用 closest() 获取最近的公共(public)父级,即本例中的 li,然后使用 find()获取. rating。另请注意,事件处理程序中的两个语句可以组合。试试这个:

let result2 = "Lorem ipsum";

jQuery(function() {
  $(".up").on('click', function() {
    $(this).addClass('active_vote').closest('li').find('.rating').html(result2);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="suggestions">
  <li id="59">
    <div class="vote active">
      <div class="support-feature-request-voted">
        <div class="rating">
          10
        </div>
        <span>Voted</span>
      </div>
    </div>
    <div class="title">hii</div>
    <div class="desc">desc1</div><br>
    <a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
  </li>
  <li id="60">
    <div class="vote active">
      <div class="support-feature-request-voted">
        <div class="rating">
          8
        </div>
        <span>Voted</span>
      </div>
    </div>
    <div class="title">hello</div>
    <div class="desc">desc2</div><br>
    <a class="up">UP VOTE</a><a class="down">DOWN VOTE</a>
  </li>
</ul>

关于jquery - 在 jQuery 中将closest() 和 html() 放在一起的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58539873/

相关文章:

C# MVC 3/jQuery 预览按钮 CMS

php - 如何使长时间运行的 PHP 脚本立即显示成功消息?

html - 我可以使用 "override"HTML 元素的宽度吗?

c++ - 如何将 WT 小部件放入 PDF?

javascript - 如何使用 jQuery 更改 obj "th"样式?

jQuery Bootstrap - 从输入中删除事件后更新预输入

jquery - 在grails中将参数传递给JQuery

javascript - 获取 SVG 文本元素的宽度

javascript - 当您单击 Canvas 内的矩形时,其中所有形状都会全屏显示

html - MaterializeCSS 使行对齐