2014-05-01 59 views
0

我有一堆這些div的,我希望他們消失,如果出售價格爲$ 0.00jQuery的:從文本節點文本

<div class="ProductPriceRating"> 
    <em> 
     <strike class="RetailPriceValue">$79.99</strike> 
     $0.00 
    </em> 
    <span class="Rating Rating0"> 
     <img src="..." alt="" style="display: none" /> 
    </span> 
</div> 

所以我寫了這個jQuery

$(function(){ 
    $(".ProductPriceRating em").contents().filter(function() { 
     return this.nodeType != 1; 
    }).wrap("<span></span>"); 
    console.log($(".ProductPriceRating em span").text()); 
    if($(".ProductPriceRating span").text() == ' $0.00'){ 
      console.log('success'); 
     $('div.ProductPriceRating').hide(); 
     $('div.ProductActionAdd').hide(); 
    } 
}); 

我包在文本節點周圍添加一個span標記以便於訪問。然後,我將控制檯記錄下來,並獲得「$ 0.00 $ 0.00 $ 0.00」(頁面上每個元素的一個「$ 0.00」)。但沒有成功。

我只是不知道我要去哪裏錯了

+2

所以你不再試圖獲得一個跨度來自textnode的文本,你從問題標題寫出的時間跨度中包含了它,現在你正在嘗試做一些完全不同的事情? – adeneo

回答

2

你通過每一個父元素需要循環:

來源:

if($(".ProductPriceRating span").text() == ' $0.00'){ 
     console.log('success'); 
    $('div.ProductPriceRating').hide(); 
    $('div.ProductActionAdd').hide(); 
} 

要:

$(".ProductPriceRating").each(function() { 
    if($(this).find('span').text() == ' $0.00'){ 
      console.log('success'); 
     $(this).hide(); 
     $('div.ProductActionAdd').hide(); 
    } 
}); 
0

在您的if語句中,您只有

$(".ProductPriceRating span").text() 

在你的console.log,你有

$(".ProductPriceRating em span").text() 

這可能是問題,因爲還沒有與類「等級」