2013-01-03 52 views
1

我試圖用jQuery來定位一些動態表單變量。唯一的問題是,它們包含方括號(他們是數組格式),我似乎無法得到正則表達式的工作,將正確地找到,然後用正確的格式替換字符串爲jquery。正則表達式替換爲jquery選擇

演示代碼:

<div id="test[array][1]">wibble</div> 
<div id="test[array][2]">wibble</div> 
<div id="test[array][3]">WIBBLE</div> 
<div id="test[array][4]">WIBBLE</div> 
<button onclick="clicky();">test</button> 

<script> 

function clicky() { 
//1 fail 
$("#test[array][1]").html("moo"); 

//2 works 
element = "#test\\[array\\]\\[2\\]"; 
console.log(element); 
$(element).html("moo"); 

//3 fail 
element = "#test[array][3]"; 

element.replace(/\[/g, "\\["); 
element.replace(/\[/g, "\\]"); 
$(element).html("moo"); 
console.log(element); 

//4 fail  
element = "#test[array][4]";  

element.replace(/\[.*?\]/g,'\\$1'); 
console.log(element); 

$(element).html("moo"); 


};  

</script> 

陣列[2]的工作,但我需要能夠轉換一個隨機生成的字符串轉換成一個版本的jQuery那是可接受的。它也令我困惑,因爲console.log顯示只有1個反斜槓的元素。

我傳遞了一個字符串,例如'#test [array] [1]',並且需要將它轉換爲jQuery將接受的格式作爲標識符。

任何指針將不勝感激!

+1

看看它對性能有什麼影響會很有趣,但是你可以使用選擇器'[id ='test [array] [1]']'而不是 –

回答

1

您仍然可以使用舊的document.getElementById函數,然後在需要時將其轉換爲jQuery元素。

樣品:

$('#clicky').click(function() {  
var element = document.getElementById("test[array][1]"); 
$(element).html('moo');  
}); ​ 

<div id="test[array][1]">wibble</div> 
<div id="test[array][2]">wibble</div> 
<div id="test[array][3]">WIBBLE</div> 
<div id="test[array][4]">WIBBLE</div> 
<button id="clicky">test</button> 

提琴手:http://jsfiddle.net/tatzz/2/

+0

謝謝,這就是訣竅。 +1以避免正則表達式呢! –

+0

是的,忽略框架並恢復到'好老'javascript – geedubb

0

你可以試試這個做你的字符串替換...

element = "#test[array][3]"; 
element = element.replace(/\[/g, "\\\\["); 
element = element.replace(/\]/g, "\\\\]"); 
$(element).html("moo"); 
console.log(element); 

您需要分配的替換回結果到變量。