转义jQuery选择器中的方括号

时间:2015-05-12 12:30:08

标签: javascript brackets

目前我有以下<select>框:

<select name="selectemail[]" multiple="true">
    <option value="email">test@email.com</option>
    <option value="name">Joe</option>
    <option value="date">2015</option>
</select>

在Javascript文件中,我有以下内容:

$("#add").click(function(){ 
    /* Note the square brackets below */
    $("[name=selectemail[]] option:selected").each(function(){
        $("#text").val($("#text").val() + $(this).text() + "\n"); 
    });
});

我试图通过选择需要转移的项目,将<select>框的内容转移到<textarea>

问题是我不知道如何在我的jQuery选择器中的<select>框的名称中转义括号。

2 个答案:

答案 0 :(得分:2)

解决方案是稍微更改您的选择框:

<select name="selectemail[]" multiple="true" id="myselect">

$('#myselect')将选择列表框,但您可以使用此jQuery选择器来获取所选选项

$('#myselect :selected')

查看 working fiddle here

如果你真的想按名称选择,你还需要转义斜线(因为它们在一个字符串中),所以你的选择器将是:

$("[name=selectemail\\[\\]] :selected")

有两个原因我不会这样做:

  1. 按ID选择比按属性选择要快得多(我甚至认为按css选择比按名称选择快得多)。

  2. 这对于可读性而言非常糟糕

答案 1 :(得分:-1)

您应该能够使用反斜杠来转义括号,如下所示:

<select name="selectemail\[\]" multiple="true">