Reputation: 35
I'm trying to make a progress bar by using data-atribute, but in Jquery both actions cannot be performed simultaneously.
<div class="progressbar">
<div class="progressvalue" data-percent="50"></div>
</div>
.progressbar {
background: #9696A0;
height: 20px;
border-radius: 10px;
color: #fff;
text-align: center;
font-size: 14px;
position: relative;
z-index: 3;
}
.progressvalue {
background: #4650C8;
position: absolute;
top: 0;
bottom: 0;
left: 0;
width: 0;
z-index: -1;
border-radius: 10px;
}
$('.progressvalue').each(function() {
var $this = $(this);
$this.css('width', $this.data('percent') + '%');
$this.parent().text('tournament progress: ' + $this.data('percent') + '%');
});
The result is:
But it should be:
Upvotes: 3
Views: 67
Reputation: 8941
You have two issues. Here's a working solution. https://jsfiddle.net/usyL2vcw/1/
Your first issue is that you are using this
instead of $this
.
Your second issue is that you can't change the text
of a div
that has children (You can but it replaces the children). Use a sibling span instead.
<div class="progressbar">
<div class="progressvalue" data-percent="50"></div>
<span></span>
</div>
$('.progressvalue').each(function() {
var $this = $(this);
$this.css('width', $this.data('percent') + '%');
$this.siblings().text('tournament progress: ' + $this.data('percent') + '%');
});
Upvotes: 3