我试图遍历所有价格范围,然后插入一些显示其节省的HTML。
只要删除.each
函数和(this).next
,我就可以将其用于一个产品上。
我在Firebug中遇到的错误是TypeError: jQuery(...).next(...).html(...) is undefined
jQuery('.price').each(function(){
var pricea = parseInt(jQuery(this).next(".count .amount:first").html().replace("£","")) ;
var priceb = parseInt(jQuery(this).next(".count .amount:last").html().replace("£",""));
var total = (pricea - priceb) / (pricea) * 100;
var totalfixed = total.toFixed();
jQuery(this).next('.saving').append(totalfixed);
console.log(totalfixed);
});
我的HTML:
<li class="product ">
<span class="price">
<del class="count"><span class="amount2">WAS</span><span class="amount">£35</span></del>
<ins class="count"><span class="amount2">NOW </span><span class="amount">£20</span><span style="clear:both" class="saving"> <br><br> YOU SAVE %</span></ins> </span>
</li>
<li class="product ">
<span class="price">
<del class="count"><span class="amount2">WAS</span><span class="amount">£35</span></del>
<ins class="count"><span class="amount2">NOW </span><span class="amount">£20</span><span style="clear:both" class="saving"> <br><br> YOU SAVE %</span></ins> </span>
</li>
您可以查看实时演示Here
答案 0 :(得分:1)
.next('.saveing')期望在.price旁边找到一个带有保存类的span标记,如下所示:
<span class="price"></span>
<span class="saving"></span> // <-- it is looking for this
但你的代码是这样的:
<span class="price">
<span class="saving"></span>
</span>
根据您的情况,您需要
jQuery(this).find('.saving').append(totalfixed); //this will find .saving inside of .price
对于记录,我只能在我的编辑器中将html放在突出显示开/关标签时才能看到。请格式化您的代码不仅适合我们,也适合您自己,它会为您节省很多麻烦。
答案 1 :(得分:1)
当我将上述代码放入this jsfiddle时,我得到了一个不同的错误:
未捕获的TypeError:无法调用未定义的方法'replace'。
这解决了您的问题:
jQuery('.price').each(function(){
var pricea = parseInt(jQuery(this).find(".amount:first").html().replace("£","")) ;
var priceb = parseInt(jQuery(this).find(".amount:last").html().replace("£",""));
var total = (pricea - priceb) / (pricea) * 100;
jQuery(this).next('.saving').append(total.toFixed());
});
.find()
在jQuery(this)
内搜索类.amount
的元素(:first和:last one)