Снять квадратные скобки в селекторе jQuery

В настоящее время у меня есть следующее <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> выбрав элементы, которые должны быть переданы.

Проблема в том, что я не знаю, как избежать скобок во имя <select> коробка в моем селекторе jQuery.

2 ответа

Решение

Решение состоит в том, чтобы немного изменить ваш selectbox:

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

$('#myselect') выберет список, но вы можете использовать этот селектор jQuery, чтобы получить выбранные опции

$('#myselect :selected')

Смотрите рабочую скрипку здесь.

Если вы действительно хотите выбрать по имени, вам также нужно экранировать косые черты (потому что они в строке), чтобы ваш селектор был:

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

Есть две причины, по которым я бы не стал этого делать:

  1. Выбор по идентификатору намного быстрее, чем по атрибуту (я даже думаю, что выбор по классу будет намного быстрее, чем по имени благодаря CSS).

  2. Это ужасно для читабельности

Вы должны иметь возможность использовать обратную косую черту, чтобы выйти за скобки, например так:

<select name="selectemail\[\]" multiple="true">
Другие вопросы по тегам