Кодирование строки в объект HTML в jQuery

Я пытаюсь создать объект "на лету", но я не могу превратить эту строку в функциональный объект HTML. Может ли кто-нибудь показать мне правильный способ сделать это? Благодарю.

var string ="<select numbers\""="">\
 <!--?php\
 foreach($data as $key =--> $value){\
 if($key == 0){\
 echo '<option value="\" '.$value.'\""="" selected="\" selected\""="">'.$value.'</option>';\
 }\
 else{\
 echo '<option value="\" '.$value.'\""="">'.$value.'</option>';\
 }\
 }\
 ?>\
 </select>";

element.prepend(string );
3 ответа

Вы не можете использовать PHP в Javascript, так как это серверный код, и JS его никогда не увидит. Однако с чистой строкой HTML вы можете сделать $(string), и это будет корневой объект в этой строке как объект jQuery.

Таким образом, в сущности, ваш PHP код будет внутри тега сценария, который будет генерировать Javascript string переменной:

var string ="<select numbers\""="">";
<!--?php
 foreach($data as $key =--> $value){
 if($key == 0){
 echo 'string += "<option value="\" '.$value.'\""="" selected="\" selected\""="">'.$value.'</option>";';
 } else{
 echo 'string += "<option value="\" '.$value.'\""="">'.$value.'</option>";';
 }
 }
?>
string += "</select>";

и ваш следующий Javascript будет:

var select = $(string);
element.prepend( select );

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

var string ="<select numbers\""="">";
string += "<option value="\" default\""="" selected="\" selected\""="">default</option>";
string += "<option value="\" option"="" 1\"="">Option 1</option>";
string += "<option value="\" option"="" 2\"="">Option 2</option>";
string += "<option value="\" option"="" 3\"="">Option 3</option>";
string += "<option value="\" option"="" 4\"="">Option 4</option>";
string += "</select>";

var select = $(string);
element.prepend( select );


Самое замечательное в PHP, вы можете вставить его в скрипт anywhare. Проблема, с которой я сталкиваюсь в этом коде, состоит в том, что я поставил цикл foreach перед запросом. Так что я просто заменяю запрос выше тега скрипта, который содержит цикл foreach, и он работает. Этот метод является новым для меня, и сегодня я узнаю что-то новое. Отличная работа всем и большое спасибо.


var string = '<select>';

<!--?php
foreach($data as $key =--> $value) {
 echo 'string += \'<option value="'.$value.'">'.$value.'</option>\'';
} ?>

string += '</select>';

licensed under cc by-sa 3.0 with attribution.