2011-12-02 50 views
1

我知道,這個正則表達式替換:something.replace(/something/g,"something");替換字符串每次出現,但我怎麼用一個jQuery/JavaScript表達式替換所有的東西,因爲這樣的事情:javascript全部替換爲javascript表達式?

newhtml=newhtml.replace(wrap($('<span class="charachter">' + prop + '</span>'))/g, wrap($('<span class="charachter">' + prop + '</span>'), obj[prop])); 

沒有當它是工作變成這樣的事情:

newhtml=newhtml.replace(/wrap($('<span class="charachter">' + prop + '</span>'))/g, wrap($('<span class="charachter">' + prop + '</span>'), obj[prop])); 

我該怎麼辦?

+0

的.replace()函數適用於字符串。你想要替換什麼?你有什麼看起來在替換的兩個部分相同 –

+0

我真的不知道你在那裏試圖做什麼。 –

回答

2

正則表達式僅適用於字符串。現在發生的事情是,它會將通常選擇節點的文本轉換爲字符串,並試圖匹配那些不匹配的字符,因此它什麼都不會做。

如果要替換節點,則需要修改節點屬性或刪除節點並在同一位置添加新節點。

注意,您可以使用jQuery replaceWith方法(也可以使用克隆方法,具體取決於您想要執行的操作)爲1節點提供您嘗試替換的所有節點屬性。

$('#node1').replaceWith($('#node2')); //Replace node1 with node2 
$('#node1').replaceWith($('#node2').clone()); // Replace node1 with a copy of node2 
+0

您可能還想使用replaceWith()將元素替換爲新元素。 –

+0

查看更新:) – jyore

+0

我試圖用html代替一個字符串,而不是一個實際的節點。希望你明白我的意思 –

0

我知道其他海報的回答可能是更緊密地與你所需要的排列,但如果你想做的事與他們看中的變量正則表達式,你需要用正則表達式構造。

var text = "old stuff" 
var stuff = "lots of old stuff" 
var newStuff = stuff.replace(new RegExp(text, 'g'), "new stuff") // lots of new stuff 

上取代更多的文檔: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

至於你也許你會想要做這樣的事情:

var $span = $("<span class='rarar'>bla bla bla</span>") // create the new element 
var html = $span.text() // bla bla bla 
var text = html.replace(new RegExp("bla", "g"), "go") 
$span.text(text) // <span class='rarar'>go go go</span> 
$span.appendTo(document.body) // add it to the body