jQuery .prev()运行不正常

时间:2016-02-07 23:33:43

标签: javascript jquery

我正在编写购物网站的前端,方案是: 如果我们有销售报价,那么首先必须通过直接价格并且插入价格旁边。

所以这是我的jquery:

$(document).ready(function () {
    if ($('.price span.price-new').text().length !=  '') {
    this.prev('.price span.price-new').before("€").text(); 
    this.prev("span").css({"text-decoration": "line-through"});

}
      });

这是我的HTML:

<?php                                           
    foreach( $this->products() as $products)
        {
echo
'<div class="price"><span class="price-old">€&nbsp;'.$products['price'].'</span>'.
'<span class="price-new">'.$products['special_price'].'</span></div>'.'</div>';}?>

他们两个都没有工作。 我尝试用$(这个)它也没有用,因为我们有许多价格新的课程,我不能提到特定的编辑课程,我也使用prevUntil但仍然没有。

3 个答案:

答案 0 :(得分:0)

不应该更像这样吗?

$(document).ready(function () {
    $('.price-old').css({"text-decoration": "line-through"});
    $('.price-new').text(function(index, old_text) {
        return "€" + old_text;
    })
});

(所有额外的代码是什么?)

答案 1 :(得分:0)

你的代码是不遵循jquery规则的。

.text().length !=  ''

.length此选项始终返回整数值,因此您无法像!= ''

那样进行复制

这里

this.prev('.price span.price-new').before("€").text(); 
this.prev("span").css({"text-decoration": "line-through"});

根据您的代码.prev表示$(document).prev

尝试这样的事情:

$(document).ready(function () {
    $('.price span.price-new').each(function() {

     $(this).prev().before("€"); 
     }
});

如果你能给我一点解释,我可以给你一个更好的解释

答案 2 :(得分:0)

this关于范围和文档范围的工作,这引用了窗口对象,这就是它无法工作的原因。你必须选择特定的元素,然后尝试prev()。