简体   繁体   中英

JQuery on click Progress Bar

I'm trying to get the progress bar animation to run when I click the .trigger . I'm getting the data-percentage value in the logs but the animation isn't running. It works without using $(this).closest() but I cannot figure out why the animation isn't running with my current JS code.

 $(".list").on("click", ".trigger", function() { var e = $(this).closest(".item"); $(".progressbar").attr("data-percentage", e.find("#percent").text()); var t = e.find("#percent").text(); return ( $(".progressbar").each(function() { var n = e, r = t; console.log(t), parseInt(n.data("percentage"), 10) < 2 && (r = 2), n.children(".bar").animate({ width: r + "%" }, 500); }), !1 ); }); 
 .item { width: 50px; height: 50px; border: 1px solid; } .trigger { height: 30px; width: 30px; border: 3px solid blue; cursor: pointer; } .progressbar { position: relative; display: block; height: 10px; background: #f5f5f5; } .bar.money-green { background: #3cd3ad; } .bar { position: absolute; display: block; height: 100%; background: #fcb31c; width: 0%; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="list"> <div class="item"> <div class="trigger"> <p id="percent">22</p> </div> </div> </div> <div class="progressbar" data-percentage=""> <div class="money-green bar"><span></span></div> </div> 

I updated the code for you. Clean and clear way

You don't need to return in onclick function. And you should use $(this) inside .each to get current index element

$(".list").on("click", ".trigger", function() {
  var e = $(this).closest(".item");
  var t = e.find("#percent").text();
  $(".progressbar").attr("data-percentage", t);

  $(".progressbar").each(function() {
    $(this).find(".bar").animate({
      width: t + "%"
    }, 500);
  });
});

See the codepen

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM