0

我试图遍历我所有的价格范围,然后插入一些 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">&pound;35</span></del>
    <ins class="count"><span class="amount2">NOW </span><span class="amount">&pound;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">&pound;35</span></del>
    <ins class="count"><span class="amount2">NOW </span><span class="amount">&pound;20</span><span style="clear:both" class="saving"> <br><br> YOU SAVE %</span></ins> </span> 
</li>

您可以在此处查看现场演示

4

2 回答 2

1

.next('.saving') 期望在 .price 旁边找到一个带有 save 类的 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 放入我的编辑器中突出显示打开/关闭标签时才能看到这一点。请格式化您的代码,不仅是为了我们,也是为了您自己,它会为您省去不少麻烦。

于 2013-07-24T16:41:21.153 回答
1

当我将上面的代码放在这个 jsfiddle中时,我得到了一个不同的错误:

未捕获的类型错误:无法调用未定义的方法“替换”。

这可以解决您的问题:

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 一个)

于 2013-07-24T16:41:34.513 回答