2012-05-22 66 views
0

我怎樣才能使這個小提琴作品: http://jsfiddle.net/gAHwW/用方括號動態域名(小提琴含)的jQuery選擇元素

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元素動態,他們的名字/ IDS可以有方括號。

謝謝!

+0

你的問題是什麼? – xdazz

+0

當你說名稱&ids可以有方括號時,你的意思是它們是數組嗎? – FluffyKitten

回答

3

你只需要雙重轉義(\\)括號。

這裏有一個演示:http://jsfiddle.net/k3YyX/


下面是從the jQuery docs報價:

如果你希望使用任何的元字符(如「#$%&」 ()* +,。/:; < =>?@ [\] ^`{|}〜)作爲名稱的文字部分,必須用兩個反斜槓來跳過該字符:\\。例如,如果你有一個元素無線th id =「foo.bar」,您可以使用選擇器$(「#foo \\。bar」)


更新:

這是你的小提琴,在工作狀態下:http://jsfiddle.net/gAHwW/1/

我所做的只是在你的$escape功能替換'\\\\$1'這個'\\$1'

+0

如何讓我的小提琴奏效?當我在替換之後存儲結果字符串(添加'\\')時,它不起作用。 – Garrett

+0

@Garrett - 我用你的小提琴更新了我的答案。 –