Может быть, это глупый вопрос, но я не специалист по jQuery, поэтому мне нужны пояснения. Я хочу получить значение выбранного параметра в моем выборе. Поэтому я пишу этот код:
var actual_option = $(this).find('option:selected', this).map(function ()
{
return this.value;
}).get();
Когда пользователь нажимает на кнопку «Выбрать эту переменную», она будет расти через значение параметра, проблема в том, что конечный результат таков:
[ " 2 " ]
Вместо этого
2
Как избежать скобок?
4 ответа
Не нужно .map()
или .get()
здесь. Возвращаемое значение имеет квадратные скобки, потому что .get()
возвращает массив.
Учитывая, что $(this)
представляет тег <select>
, вы можете просто сделать:
var actual_option = $(this).val();
.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')
.
var actual_option = $(this).find('option:selected', this).map(function ()
{
return this.value;
}).get(0);
Попробуй это
Причина, по которой значение возвращается в массиве, заключается в том, что вы используете map()
- что вам на самом деле не нужно в этом случае.
Предполагая, что this
ссылается на сам элемент select $(this).val()
будет работать:
var actual_option = $(this).val();
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.