Как получить идентификатор выбранной опции в в моем случае?

#javascript #jquery #jquery-ui #jquery-selectors #dom-events

#javascript #jquery #jquery-пользовательский интерфейс #jquery-селекторы #dom-события

Вопрос:

У меня есть поле <выбрать> и кнопка в index.html :

 <select id="mylist"></select>

<input type="button" id="btn" value="update">
  

Следующий Javascript обновит параметры поля < выбрать> при нажатии кнопки:

 var btn=$('#btn');
btn.click(function(){
     var optionList = GET_OBJECT_LIST(); //get an array of Object, object has id amp; name
     var select  = $("#mylist");

     select.empty();

     for(var i=0; i<optionList.length; i  ){
       select.append("<option value="   optionList[i].id  ">"   optionList[i].name   "</option>");
     }

});
  

До сих пор все было хорошо.

Затем я хотел бы реализовать функцию, которая после options обновления, при щелчке мыши на опции в <select> поле, я могу получить идентификатор объекта (т. Е. <option> значение) выбранной опции. Как это сделать?

Комментарии:

1. id нет value . Это разные свойства.

2. @Blender, если вы внимательно проверите мой пост, идентификатор здесь является object.id Я хотел бы получить идентификатор объекта выбранной опции, который представляет объект в моем случае. Я использую <option value=object.id > по назначению. Что мне нужно, так это получить это object.id при нажатии мышью на определенную опцию.

Ответ №1:

Это может сработать (не уверен, возвращает ли это массив или нет, так что вы узнаете):

 $('#mylist').change(function() {
  var selected = $(this).find('option:selected');

  // Foo.
});
  

Комментарии:

1. Привет, я могу получить значение выбранной опции (т. Е. object.id ) путем доступа к «выбранному[0].значению», но что означает это 0?

2. [0] это индекс массива. Вы можете выбрать несколько элементов, чтобы они были объединены в массив. Вы можете использовать .find('option:selected:eq(0)'); , если хотите, поскольку он выбирает первый выбранный элемент.

Ответ №2:

Я решил использовать следующий код, который точно соответствует тому, что я хочу:

 $('#mylist').change(function() {
  var selected_object_id = $(this).find('option:selected').attr('value');
  console.log(selected_object_id); //it directly returns to me the selected option represented object id
});