1

我正在尝试使用 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>

Array[2] 正在工作,但我需要能够将随机生成的字符串转换为 jQuery 可接受的版本。它也让我感到困惑,因为 console.log 显示的元素只有 1 个反斜杠。

我传入了一个字符串,例如'#test [array] [1]',并且需要将其转换为jQuery 将接受作为标识符的格式。

任何指针将不胜感激!

4

2 回答 2

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/

于 2013-01-03T14:46:52.443 回答
0

你可以试试这个来做你的字符串替换......

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

您需要将替换的结果分配回变量。

于 2013-01-03T14:49:56.810 回答