2011-05-02 167 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'); 
}); 
相關問題