проблема с методом .attr () для получения значения атрибутов элементов

#javascript #jquery

#javascript #jquery

Вопрос:

у меня есть строка, подобная этой :

 string_data = "<option value='1'>ahmad</option><option value='2'>mohammad</option><option value='3'>ali</option>"
  

теперь я хочу получить значение атрибута value параметров и предупредить об этом. для этого я пишу это :

 $(string_data).contents()
.each(function(){
    value   =   $(this).attr('value');
    text    =   $(this).text();
    alert(value);
});
  

но этот код возвращает undefined для всех из них.
кроме того, string_data — это строка, которую я получаю из php-скрипта с Ajax через метод jQuery $.post().
я использую jquery 1.6 .

Ответ №1:

contents() Метод извлекает дочерние элементы ваших элементов, которые в вашем случае являются текстовыми узлами. Опустите вызов этого метода для перебора <option> элементов:

 $(string_data).each(function(){
    value   =   $(this).attr('value');
    text    =   $(this).text();
    alert(value);
});
  

Ответ №2:

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

 $('#some_hidden_select').html(string_data).find("option")
.each(function(){
    value   =   $(this).attr('value');
    text    =   $(this).text();
    alert(value);
});
  

Ответ №3:

Попробуйте:

$(string_data).find("опция")
.каждый(функция(){
 значение = $(this).attr('значение');
 text = $(this).text(); 
 предупреждение (значение);
});