在jQuery中将String编码为HTML对象

时间:2014-04-30 18:45:56

标签: php jquery html

我尝试动态创建一个对象,但我无法将此字符串转换为功能性HTML对象。有人能告诉我正确的方法吗?感谢。

var string ="<select class=\"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 个答案:

答案 0 :(得分:1)

你不能在Javascript中使用PHP,因为它是服务器端代码,JS永远不会看到它。但是,使用纯HTML字符串,您可以执行$(string),它将作为jQuery对象在该字符串中成为根对象。

所以从本质上讲,您的PHP代码将位于一个脚本标记内,该脚本标记将生成Javascript string变量:

var string ="<select class=\"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 class=\"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 );

答案 1 :(得分:1)

关于PHP的好处是你基本上可以在脚本中添加任何你想要的内容。我在此代码中遇到的问题是因为我将 foreach 循环放在查询之前。所以我所做的只是替换包含foreach循环的脚本标记上方的查询,并且它可以工作。这种方法对我来说是新的,我今天学到了新东西。每个人都很棒,非常感谢你。

答案 2 :(得分:-1)

var string = '<select class="number">';

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

string += '</select>';