2011-09-02 64 views
2

我以前發過類似的問題,但這有點不同。我正在尋找使用jQuery從下面的價格代碼中刪除冒號。通過jQuery從部分文本中刪除冒號?

<font class="pricecolor colors_productprice"> 
     <div class="dealtext"></div> 
     : $58.05 
</font> 

到目前爲止,我認爲可能是有些實現這樣的,我只是需要另一套眼睛加以糾正:

$('.pricecolor:contains(" : ")').remove(colon??); 

它仍然看起來不正確,也許我需要一個變種設置爲get()

回答

2
$('*').each(function() { 
    $(this).html($(this).html().replace(":", "")); 
}); 
+0

這樣做對我來說,謝謝大家! – ToddN

+0

適用於OP的例子,但不是很健壯。這簡單地跳過它看到的第一個冒號 - http://jsfiddle.net/veVyY/。哎喲。 –

+0

好點肖恩,幸運的是我只需要打一個冒號。因此,爲了將來的參考,人們可能必須修改多個清除。 – ToddN

0
function findAndReplace(elements, textToFind, textToPlace) { 
      $.each(elements.contents(), function() { 
       // This is added to make sure the nodes you request are text nodes 
       if (this.nodeType == 3) 
        this.nodeValue = this.nodeValue.replace(textToFind, textToPlace); 
      }); 

     } 

     findAndReplace($('div.dealtext'), ':'); 
+1

這似乎是一個非常沉重的*** ***的方式來做到這一點..定期表達式將是一個更好的解決方案。請記住'$ .each'運行非常緩慢。此外,您正在進行大量的DOM調用,這也會導致瀏覽器崩潰。 – rlemon

+0

我投票了你的評論,因爲它是有效的,但我的方法工作,以取代整個DOM中的所有冒號。在這種情況下,我的解決方案顯然不是最好的選擇,因爲OP只想刪除一個特定的冒號,但是在某些情況下我的代碼可能是必需的。 – kramden88

+0

我只評論你的利益。我看到很多人過度依賴JQuery來完成傳統(無框架)JavaScript所能做的簡單事情。不是說你的代碼沒有用,我確定它是。只是指出一些性能可能受到影響的領域。觀看此視頻http://www.youtube.com/watch?v=mHtdZgou0qU&feature=channel_video_title – rlemon

0

我認爲你可以這樣做以下。

$(".pricecolor colors_productprice").html($(".pricecolor colors_productprice").html()replace(/:/g, "")) 

希望這有助於!

0
var e = $(".pricecolor:contains(':')"); 
e.text(e.text().replace(/\s*:\s*/, '')); 
0

這將工作:

$(".pricecolor:contains(' : ')").each(function(){ 
    $(this).html($(this).html().replace(" : ", "")); 
}); 
0

給這一個鏡頭:

$('.pricecolor:contains(" : ")').text(function(index, text) { 
    return text.replace(/:/g, ""); 
}); 

我認爲你需要傳遞的,而不是一個字符串$的.text(函數)這樣的以避免損壞使用'.pricecolor:contains(「:」)'選擇器找到的其他內容。

1

我發現這個問題,因爲我需要它,我最終使用該功能做同樣的事情......

$('.pricecolor:contains(" : ")').html(function(index,oldhtml) { 
    return oldhtml.replace(' : ',''); 
});