将数据附加到<script>

时间:2016-07-28 14:18:42

标签: javascript jquery html

我有时会克隆一行。

&#xA;&#xA;
 &lt; script id =“SubRow10”type =“text / template”&gt;&# XA; &lt; select id =“SubSelect10”class =“form-control”name =“SubcategorySelect”required&gt;&#xA; &lt; option value =“m,2”&gt; Op1&lt; / option&gt;&#xA; &lt; option value =“m,3”&gt; Op2&lt; / option&gt;&#xA; &lt; option value =“m,5”&gt; Op3&lt; / option&gt;&#xA; &lt; option value =“m,6”&gt; Op4&lt; / option&gt;&#xA; &lt; / select&gt;&#xA;&lt; / script&gt;&#xA;  
&#xA;&#xA;

我有一个表单可以为添加一个选项#Subselect10“&#xA;但是当我这样做时:

&#xA;&#xA;
  $('#SubSelect10')。append('&lt; option value =“m,8”&gt; Op5&lt; / option&gt;');&#xA;  
&#xA;&#xA;

它不起作用,但当我这样做时:

&#xA;&#xA;
  $('#SubRow10')。append('&lt; option value =“m,8”&gt; Op5&lt; / option&gt;');& #xA;  
&#xA;&#xA;

它有效,但不会将其添加到选择菜单。

&#xA;&#xA; <有人可以引导我朝着正确的方向前进吗?

&#xA;&#xA;

这是 JSFiddle

&#xA;

2 个答案:

答案 0 :(得分:1)

这样做:

&#13;
&#13;
var template = $('#SubRow10');

template.html($(template.html()).append('<option value="m,8">Op5</option>'));

console.log(template.html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script id="SubRow10" type="text/template">
  <select id="SubSelect10" class="form-control" name="SubcategorySelect" required>
    <option value="m,2">Op1</option>
    <option value="m,3">Op2</option>
    <option value="m,5">Op3</option>
    <option value="m,6">Op4</option>
  </select>
</script>
&#13;
&#13;
&#13;

问题在于<script>标记不会将其内容呈现为HTML,而是呈现为文本,即使type不是text/javascript。为了避免这个问题,您需要在注入另一个<option>之前将内容解析为HTML。

答案 1 :(得分:0)

可能问题是你的字符串"<option value="m,8">Op5</option>"包含双引号,因此JavaScript将其视为函数的两个不同的独立参数。尝试转义字符串中的双引号(改为使用\")或使用单引号来包装字符串,例如。

$("#SubRow10").append('<option value="m,8">Op5</option>')