javascript: установить заголовок параметра в теге выбора с помощью javascript

Я работаю над проектом, в котором у меня есть тег select с его параметрами, генерируемыми в функции javascript. В настоящее время я заполняю атрибут "title" каждой опции подробным описанием.
Внутри функции javascript я сейчас делаю что-то вроде этого:

var country = new Option("countryUSA", "United States of America");
$("#mySelect").get(0).options[1]=country;

Это работает нормально, опция появляется. Однако мне также нужно установить атрибут «заголовок» этого элемента опции html. Я пробовал что-то вроде этого:

country.title="Full description of USA";

но это не работает.
Я знаю, что могу сделать что-то вроде этого:

 $("#mySelect").get(0).options[1].title="My title";

но я пытался установить заголовок перед добавлением опции в тег выбора. Разве объект «Option» не позволяет мне установить свойство «title»? Функция javascript даже не выполняется. Не могу ли я установить атрибут «title» для html-элемента «option» в javascript?


person Johnny    schedule 10.08.2011    source источник
comment
Я не думаю, что объект Option технически является узлом HTML, пока он не будет добавлен к выбору. Таким образом, если он не поддерживает свойство title, оно не будет преобразовано в атрибут title.   -  person OverZealous    schedule 11.08.2011
comment
Что именно вы подразумеваете под Функция javascript даже не выполняется? Какая функция JS?   -  person Matt Ball    schedule 11.08.2011


Ответы (2)


Похоже, вы используете jQuery. Есть гораздо более простой способ сделать то, что вы хотите. Просто используйте jQuery API, а не возвращайтесь к ванильному DOM:

$('<option>',
{
    value: 'countryUSA',
    title: 'Full description of USA',
    text: 'United States of America'
}).appendTo("#mySelect");

Тем не менее, вы ожидаете, что установка title заставит всплывающую подсказку браузера появляться при наведении курсора на <option>? По крайней мере, в Chrome такая подсказка не появится.

Попробуйте сами: http://jsfiddle.net/GMTLn/1/


Изменить Chrome и Safari не отображают всплывающую подсказку для <option> с атрибутом title, потому что WebKit этого не делает. См. этот отчет об ошибке.

person Matt Ball    schedule 10.08.2011
comment
@patrick спасибо за редактирование, но скрипка не предназначена для использования JS - просто продемонстрируйте, что атрибут title в <option>s не показывает всплывающую подсказку :) - person Matt Ball; 11.08.2011
comment
Ой, извините за это. Я полностью упустил суть. Думал, что вы просто вставили неправильную ссылку. - person user113716; 11.08.2011
comment
спасибо, Мэтт. Название отображается в виде всплывающей подсказки в последних версиях Firefox и IE. Это самый простой способ показать конкретную всплывающую подсказку для каждой опции. Я не тестировал его в Chrome. У вас есть другие предложения? Вот мой оригинальный пост: stackoverflow.com/questions/6949712/ - person Johnny; 11.08.2011

Вы можете установить атрибут title

   $('#mySelect').append(
   $("<option/>", { text: value }).attr("title",value)); 

Вот рабочий пример http://jsbin.com/ozudoTod/1/.

Или таким образом:

     value = cleanNulls( value );
     var option = $( '<option/>', {
     title: value,
     text: value
     });
     $('#mySelect').append( option );
person Harry    schedule 06.07.2014