Может быть, это глупый вопрос, но я не специалист по jQuery, поэтому мне нужны пояснения. Я хочу получить значение выбранного параметра в моем выборе. Поэтому я пишу этот код:

var actual_option = $(this).find('option:selected', this).map(function ()
{
    return this.value;
}).get();

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

[ " 2 " ]

Вместо этого

2

Как избежать скобок?

1
Sandokan 18 Дек 2015 в 18:44

4 ответа

Лучший ответ

Не нужно .map() или .get() здесь. Возвращаемое значение имеет квадратные скобки, потому что .get() возвращает массив.

Учитывая, что $(this) представляет тег <select>, вы можете просто сделать:

var actual_option = $(this).val();
5
The F 18 Дек 2015 в 15:56

.get() превращает всю коллекцию в собственный массив. Вы можете указать индекс, используя .get(0):

var actual_option = $(this).find('option:selected').map(function ()
{
    return this.value;
}).get(0);
//     ^

Но это чрезмерно, когда вы можете просто позвонить .val(), чтобы вернуть значение первого элемент в выбранной коллекции элементов.

var actual_option = $(this).val();

Также стоит отметить, что .find() принимает только один параметр, поэтому {{X1} } должно быть просто .find('option:selected')

Похоже, вы пытались использовать сокращенную комбинацию $('option:selected', this), которая эквивалентна $(this).find('option:selected').

1
zzzzBov 18 Дек 2015 в 15:47
var actual_option = $(this).find('option:selected', this).map(function ()
{
    return this.value;
}).get(0);

Попробуй это

1
jQuery00 18 Дек 2015 в 15:46

Причина, по которой значение возвращается в массиве, заключается в том, что вы используете map() - что вам на самом деле не нужно в этом случае.

Предполагая, что this ссылается на сам элемент select $(this).val() будет работать:

var actual_option = $(this).val();
2
Rory McCrossan 18 Дек 2015 в 15:46