Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Jquery: append + each = что то не то :(
 
 автор: tetron   (16.11.2015 в 14:53)   письмо автору
 
 


                                        $('#boxOption').append("<select>");

                                        $.each(groupOptionValue['option'], function(optionIndex, optionValue)
                                        {
                                            $('#boxOption').append("<option>"+optionValue+"</option>");
                                        });

                                        $('#boxOption').append("</select>");



При пополнений такого кода получается вот так:

<select></select>
<option>name</option>
<option>name</option>
<option>name</option>
<option>name</option>

  Ответить  
 
 автор: tetron   (16.11.2015 в 16:23)   письмо автору
 
   для: tetron   (16.11.2015 в 14:53)
 

Сделал так:


$('#boxOption').append("<select id='ps"+groupOptionIndex+"'>");

$.each(groupOptionValue['option'], function(optionIndex, optionValue)
{
$("#boxOption #ps"+groupOptionIndex).append("<option>"+optionValue+"</option>");
 });


Но не понятно почему если делать так:
$('#boxOption').append("<select>");


Вставляется:

<select></select>

  Ответить  
 
 автор: AlexSol   (17.11.2015 в 15:20)   письмо автору
 
   для: tetron   (16.11.2015 в 16:23)
 

потому что это парный тег. браузер так работает, нельзя вставить пол-тега.
с $('#boxOption').append("<p>"); вы увидите тоже самое

вам лучше сделать так

var str = "<select id='ps"+groupOptionIndex+"'>";
$.each(groupOptionValue['option'], function(optionIndex, optionValue) {
str += "<option>"+optionValue+"</option>";
});
str = "</select>";

$('#boxOption').append(str);

  Ответить  
 
 автор: confirm   (18.11.2015 в 16:42)   письмо автору
 
   для: AlexSol   (17.11.2015 в 15:20)
 

потому что это парный тег. браузер так работает, нельзя вставить пол-тега.

var a = [1, 2, 3], s = $('<select id="as"/>').appendTo('body');
$.each(a, function() {
    $('<option value="???"/>').appendTo(s).text(this)
})

  Ответить  
 
 автор: AlexSol   (19.11.2015 в 12:09)   письмо автору
 
   для: confirm   (18.11.2015 в 16:42)
 

и в чем противоречие?

  Ответить  
 
 автор: confirm   (19.11.2015 в 15:22)   письмо автору
 
   для: AlexSol   (19.11.2015 в 12:09)
 

вам лучше сделать так

Что надо полагать исходит от "полутегов", а ведь совсем не обязательно так, да и вообще средств добавления куда чем более... В общем это от недопонимания или от незнания ситуация у него возникла.

  Ответить  
 
 автор: AlexSol   (20.11.2015 в 10:23)   письмо автору
 
   для: confirm   (19.11.2015 в 15:22)
 

во всех Best-Practices упоминается что лучше использовать один append вместо серии последовательных.

https://learn.jquery.com/performance/append-outside-loop/

  Ответить  
 
 автор: confirm   (20.11.2015 в 12:09)   письмо автору
 
   для: AlexSol   (20.11.2015 в 10:23)
 

Нельзя все разнообразие задач подогнать под один метод или функцию. И уже если так, то стоит тогда парится, достаточно join(), коли не видно задания значений у опций, а уж если есть, то тогда и изменяйте напрямую html, зачем дергаете apend:

var a = ['Str 1', 'Str 2', 'Str 3'];
document.querySelector('#my').innerHTML += '<select name="as">' + a.map(function(e, i) {
    return '<option value="'+(i+1)+'">'+e+'</option>'
}).join('') + '</select>';

  Ответить  
 
 автор: AlexSol   (20.11.2015 в 12:45)   письмо автору
 
   для: confirm   (20.11.2015 в 12:09)
 

конечно же можно все делать разными методами. я только указал на то что решения из сообщений 2 и 4 не рекомендуется применять в jquery

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования