jQuery通过带有方括号的动态名称选择元素(小提琴包含)

时间:2012-05-22 03:31:56

标签: javascript jquery

如何让这个小提琴奏效: 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可以有方括号。

谢谢!

1 个答案:

答案 0 :(得分:3)

你只需要双重转义(\\)括号。

以下是演示:http://jsfiddle.net/k3YyX/


以下是the jQuery docs的引用:

  

如果您想使用任何元字符(例如!“#$%&'()* +,。/:;< =>?@ [\] ^`{ |}〜)作为名称的文字部分,您必须使用两个反斜杠转义字符: \\ 。例如,如果您有一个 id =“的元素foo.bar“,您可以使用选择器 $(”#foo \\。bar“)


<强>更新

这是你的小提琴,处于工作状态:http://jsfiddle.net/gAHwW/1/

我所做的就是用'\\\\$1'函数中的'\\$1'替换$escape