2009-12-28 25 views
1

This answer幾乎正是我所需要的。jQuery替換節點中字符的所有實例 - 工作到一個點

並稱FN,直列,在我的JQ代碼的頂部之後,我寫了這個JQ低了下去:

$(":contains(|)").each(function() { 
    replaceText('|', 'X'); 
}); 

這工作,發現整個文檔所有管道字符,並與十替換它們

但是我想替換特定div中的所有管道字符,而不是整個文檔。所以我改爲:

$("#mySpecificDiv:contains(|)").each(function() { 
    replaceText('|', 'X'); 
}); 

但是,這仍然替換文檔中的所有實例。我確信我應該使用第三個選項'節點'(請參閱鏈接回答)來限制範圍,但我嘗試過,但找不到正確的語法。

對不起,閱讀書籍,反覆試驗和過去的經驗一直阻止我努力掌握又一個愚蠢簡單的jQ練習,並且事先感謝你,如果你有時間讓我看看我做錯了什麼。

乾杯,-Alan

回答

0

使用此:

$(':contains(|)', $('#mySpecificDiv')).each(function() { 
    replaceText ('|', 'X', this); 
}); 

$()可以接受兩個參數。第一個是選擇器,第二個可以是限制搜索的元素(基於選擇器進行搜索)。

+0

謝謝,我使用'這'作爲我的解決方案的一部分。 – Alan 2009-12-28 17:48:43

1

試試這個:

replaceText('|', 'X', document.getElementById("mySpecificDiv"));  

但使用替代目前的形式文本功能將只替換第一個匹配。您需要將其更改爲正則表達式來替換div中的所有發生。

使用此更換所有比賽中的文字:

replaceText(/\|/ig, 'X', document.getElementById("mySpecificDiv")); 
+0

謝謝,我使用正則表達式作爲解決方案的一部分,並將其與以下alt答案中的'this'結合起來。 – Alan 2009-12-28 17:47:41

+0

是的,如果有多個元素需要操作,那麼$ .each是更好的解決方案。 – TheVillageIdiot 2009-12-29 04:23:29

0

是。您需要指定節點,否則它將使用body元素。它更改爲:

$("#mySpecificDiv:contains(|)").each(function() { 
    replaceText('|', 'X', this); 
}); 

this是被遍歷的各功能的當前節點的引用。

+0

謝謝,我使用了'this'作爲解決方案的一部分。 – Alan 2009-12-28 17:46:26

0

將範圍限制爲特定元素。

$('*:contains("|")', '#scopeElement') 
+0

感謝您的評論。 – Alan 2009-12-28 17:49:20

0

最後,我想下面的解決方案,完美的作品,是一些問題的答案(我的道歉,混合動力,如果你的答案是什麼,我已經和我只是這麼愚蠢,我沒沒有意識到...)。

下面找到一個特定的div,然後遞歸地將通過使用正則表達式找到的管道字符的每個實例替換爲替代文本字符串,在這種情況下爲'X'。

$("#mySpecificDiv:contains(|)").each(function() { 
    replaceText(/\|/ig, 'X', this); 
}); 

輝煌,我就不會在這裏沒有你的答案 - 許多感謝所有誰評論。

相關問題