Javascript 在具有不同值但类名相同的所有div上运行jQuery函数
我要做的是运行一个jQuery函数,该函数使用分数作为百分比来设置条的宽度,将数字分数转换为条评级系统。Javascript 在具有不同值但类名相同的所有div上运行jQuery函数,javascript,jquery,html,css,xslt,Javascript,Jquery,Html,Css,Xslt,我要做的是运行一个jQuery函数,该函数使用分数作为百分比来设置条的宽度,将数字分数转换为条评级系统。divs和divs中的分数是使用XSL从XML动态生成的 问题是函数从第一个DIV中获取分数并将其应用于所有后续DIV,而不是分别从每个DIV获取分数。作为参考,.Product\u Rating\u Score\u total是分数,.ratingBar是我的分数条后面的灰色背景,.ratingOverall是绿色条,其宽度经过调整以反映分数百分比。这是我的评级系统的图像(正如你所看到的,第
div
s和div
s中的分数是使用XSL从XML动态生成的
问题是函数从第一个DIV中获取分数并将其应用于所有后续DIV,而不是分别从每个DIV获取分数。作为参考,.Product\u Rating\u Score\u total
是分数,.ratingBar
是我的分数条后面的灰色背景,.ratingOverall
是绿色条,其宽度经过调整以反映分数百分比。这是我的评级系统的图像(正如你所看到的,第一个分区的2.0评级正在转移到其他分区。其他分区的评级应如下7.0 6.0、6.0、6.0-目前这些只是虚拟分数):
以下是我的html代码:
<div id="F26_ResultsDiv" style="display:none">
<div class="items"><div class="ColOne">
<div class="item">
<div class="otherStuff">
<span>Kindermat Basic Red/Blue</span>
<div class="overall"><span><span class="content">
<ul>
<li class="Product_Rating_Score_Overall">2.00</li>
</ul>
</span></span>
<div class="ratingBar">
<div class="ratingOverall">
</div></div></div></div></div>
非常感谢您的帮助。非常感谢。您需要本地化您的选择器:
$('.overall').each( function() {
var score = parseFloat($(this).find('.Product_Rating_Score_Overall').text()).toFixed(1);
console.log(score);
var scorePerc = score * 10;
$(this).find('.ratingOverall').width(scorePerc + '%');
$(this).find('.Product_Rating_Score_Overall').text(score);
});
更新:使用$(this)和()功能添加了小提琴
对于每个元素,您可以在其下找到具有类产品_评级_分数_总体的元素
问题在于第二行和其他引用是全局的,并且没有正确地本地化。您应该将其更改为获取本地值,而不是每次出现在全局范围上的第一个值,这就是您现在获得所看到的功能的原因。现在你认为它不起作用,但它的工作原理和它写的一模一样。通过调整代码以作用于每个
内部的局部变量。总体而言,
我们将得到您想要的正确结果
尝试按如下方式更改该代码:
$('.overall').each( function() {
var score = parseFloat($(this).find('.Product_Rating_Score_Overall').text()).toFixed(1);
console.log(score);
var scorePerc = score * 10;
$(this).find('.ratingOverall').width(scorePerc + '%');
$(this).find('.Product_Rating_Score_Overall').text(score);
});
jQuery何时运行?如果它是在页面完全加载/构建之前运行的,那么它可能看不到所有元素。你和Kenneth都是正确的,但你比他快了一分钟。我真的很感激。这一次我把头撞在墙上两个小时。你们都很棒。@Tizo-Mine并不是完全错误的,也不是最快的帖子,也不是缺少全面的例子……你们完全正确。你的也是对的。非常感谢。很抱歉没有提到你。至于谁先发的帖子,我只想看看帖子上的时间回复,埃尔赫尼比你领先了一分钟。
$('.overall').each( function() {
var score = parseFloat($(this).find('.Product_Rating_Score_Overall').text()).toFixed(1);
console.log(score);
var scorePerc = score * 10;
$(this).find('.ratingOverall').width(scorePerc + '%');
$(this).find('.Product_Rating_Score_Overall').text(score);
});
$('.overall').each( function() {
var score = parseFloat($(this).find('.Product_Rating_Score_Overall').text()).toFixed(1);
console.log(score);
var scorePerc = score * 10;
$(this).find('.ratingOverall').width(scorePerc + '%');
$(this).find('.Product_Rating_Score_Overall').text(score);
});