2011-05-02 114 views
0

如果class'specialprice'存在,我希望类'priceis'添加Class'strike'。目前它只是将它放在第一个元素上,而不是显示在页面上的所有元素。我需要它来检查“specialprice”类的所有元素。将jQuery addClass添加到所有具有类的元素

<font class="pricecolor colors_productprice specialprice"> 
    <span class="PageText_L483n"> 
    <font class="text colors_text"><b>Regular Price:<br> </b></font> 
    <span class="priceis">$2,492<sup>.38</sup></span></span> 
</font> 

$('.specialprice').find('.priceis').addClass('strike'); 
+1

代码中没有类'priceis'的元素。我假设'id =“priceis”'应该是'class =“priceis”'。 – 2011-05-02 18:08:58

+0

''应该是'class'来代替吧?对于id,您需要使用##priceis代替 – BrunoLM 2011-05-02 18:09:33

+0

您是对的,我已更新代码 – ToddN 2011-05-02 18:13:20

回答

5

你的HTML是错误的

<span id="priceis"> 

你可能只是设定class,而不是id

<span class="priceis"> 

Your current code will work if you fix your HTML.

你可能want to see this answer,它解释了为什么当DOM元素之前包括脚本不起作用。

+0

我已修复它,但它仍然只在出现的第一个“specialprice”上显示。 – ToddN 2011-05-02 18:09:35

+2

@ToddN这个脚本在哪里运行? '$(document).ready'?它必须至少在所有DOM节点呈现后执行。把所有这些元素放在脚本上。 – BrunoLM 2011-05-02 18:10:49

+0

宾果!你知道了,它并没有放在document.ready中。我目前的代码确实工作正常,谢谢! – ToddN 2011-05-02 18:15:09

1
$('.priceis').each(function(i, item) { 

    var $item = $(item); 

    if($item.hasClass('specialprice') || $item.parents('.specialprice')) 
    { 
     $item.addClass('strike'); 
    } 

}); 
4

$('.specialprice.priceis').addClass('strike');

+0

这不起作用 – ToddN 2011-05-02 18:11:51

+0

它适用于单一类,它的简单。 – 2016-02-17 07:11:33

0

试试这个:

$('.specialprice').has('.priceis').addClass('strike'); 
+0

这增加了类'罢工'与'特价'不仅'价格' – ToddN 2011-05-02 18:10:40

+0

@ToddN,林不知道你的意思 – Neal 2011-05-02 18:11:05

5

也许这样的事情?仍不能确定你的问题的解释,尚不清楚..

$(function() { 
    $('.specialprice').each(function() { 
    $(this).find('.priceis').addClass('strike'); 
    }); 
} 

编辑: 刚刚意识到也许你希望它这样的吗?

$('.specialprice').each(function() { 
    $(this).find('*').addClass('strike'); 
}); 
相关问题