如何让这个小提琴奏效: http://jsfiddle.net/gAHwW/
function $escape(string) {
return string.replace(/\\(\[|\]\\)/g,'\\\\$1');
}
$(function() {
$('input[type="button"]').click(function() {
alert($escape( $(this).attr('id') )); // to show you what the escape does
$('#' + $(this).attr('id')).hide(); // doesn't work
$('#' + $escape( $(this).attr('id') )).hide(); // doesn't work
$('#alsosquare[]').hide(); // doesn't work
//$(this).hide(); // works
//$('#alsosquare\\[\\]').hide(); // works
});
});
我需要动态地按名称/ id选择元素,并且它们的名称/ ID可以有方括号。
谢谢!
答案 0 :(得分:3)
你只需要双重转义(\\
)括号。
以下是演示:http://jsfiddle.net/k3YyX/
以下是the jQuery docs的引用:
如果您想使用任何元字符(例如!“#$%&'()* +,。/:;< =>?@ [\] ^`{ |}〜)作为名称的文字部分,您必须使用两个反斜杠转义字符: \\ 。例如,如果您有一个 id =“的元素foo.bar“,您可以使用选择器 $(”#foo \\。bar“)。
<强>更新强>
这是你的小提琴,处于工作状态:http://jsfiddle.net/gAHwW/1/
我所做的就是用'\\\\$1'
函数中的'\\$1'
替换$escape
。