在 jQuery 选择器中转义方括号

Escape square brackets in jQuery selector

目前我有以下<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> 框名称中的括号。

解决办法是稍微改变一下你的select盒子:

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

$('#myselect') 将 select 列表框,但您可以使用此 jQuery select 或获取 selected 选项

$('#myselect :selected')

看到一个working fiddle here.

如果你真的想按名字 select 你还需要转义你的斜杠(因为它们在一个字符串中)所以你的 selector 会是:

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

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

  1. 按 id 选择比按属性 select 快得多(我什至认为 select 按 class 比按名称快得多,感谢css).

  2. 可读性太差了

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

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