0

我怎样才能使这个小提琴工作: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 可以有方括号。

谢谢!

4

1 回答 1

3

您只需要将\\括号加倍 escape()。

这是一个演示:http: //jsfiddle.net/k3YyX/


这是来自jQuery 文档的引用:

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


更新:

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

我所做的只是在你的函数'\\\\$1'中用这个替换。'\\$1'$escape

于 2012-05-22T03:39:36.560 回答