2012-01-06 52 views
2

我使用最新的jQuery和下面的腳本:jQuery的替換所有div的內部空間點與一類

<script type="text/javascript"> 
$(document).ready(function(){ 
var el = $('.title'); 
el.html(el.html().replace(/\./gi, " ")); 
}); 
</script> 

這是div:

<div class="title">The.quick.brown.fox</div> 

它所做的是替換所有帶有類「標題」的DIV中的空格點,對於這項工作真的很好。

但我有許多DIV與相同的「標題」類與不同的字符串在他們,我需要他們都有點用空格替換。但這裏問題出現,因爲我得到的是所有這些DIV上的相同結果字符串「快速棕色狐狸」,而所有結果字符串應該不同,因爲所有源字符串都不相同...

我該怎麼做在所有DIV中將類替換爲「標題」和每個DIV中的所有不同字符串?

感謝

回答

5

您可以使用each()遍歷匹配的元素,或傳遞函數來html()和計算有新文字:

$(document).ready(function() { 
    $(".title").html(function(index, currentHtml) { 
     return currentHtml.replace(/\./gi, " "); 
    }); 
}); 
+0

+1傳遞函數爲'html'。 – 2012-01-06 09:55:55

+0

這兩種方法都能正常工作,現在我應該選擇哪一種,有沒有什麼區別,比如一種更通用,更正確還是更友好? – CamSpy 2012-01-06 10:14:48

+0

此方法*可能會更快,因爲它需要較少的函數調用。不過,你必須測量兩種方法。 – 2012-01-06 10:18:26

2

只需使用jQuery each方法遍歷所有元素與.title類:

$(document).ready(function(){ 
    $('.title').each(function(){ 
    $(this).html($(this).html().replace(/\./gi, " ")); 
    }); 
}); 
+0

非常感謝,就像一個魅力:) – CamSpy 2012-01-06 10:13:35

1

只要你的文字裏面只有你的文字divs,建議功能可以正常工作。但是,要允許任意html(如The.quick.brown <img src='fox.jpg'>)代碼應該更準確。

$('.title').each(function() { 
    if (this.nodeType == 3) 
     this.nodeValue = this.nodeValue.replace(/\./g, " "); 
    else 
     $(this).contents().each(arguments.callee); 
}); 

基本上,您遞歸地遍歷節點的所有後代並僅替換類型3(=文本)的節點。

小提琴:http://jsfiddle.net/jZgUY/

相關問題