Jquery在包装时更改元素

时间:2015-01-17 08:43:20

标签: javascript jquery html

我使用Jquery从服务器获取响应,并使用以下代码将特定元素替换为Response中的响应:

//msg is the returned message from the response
//$row is the element being replaced
var $newRow = $(msg).find('#'+$row.attr('id'));
$row.replaceWith($newRow);

现在msg中有一个选择框,其中包含以下html代码(包括外部元素):

<div class="grid-cell-value">
    <input type="number" data-field="quantity" value="60.7" disabled />
    <select data-field="monetary_unit" value="12" disabled />
        <option value="12" selected="selected">EURO</option>
    </select>
</div>

但是当我在Jquery中包装msg时,这就是select元素会发生的事情。(注意option元素在select元素之外。

<div class="grid-cell-value">
    <input type="number" data-field="quantity" value="60.7" disabled="">
    <select data-field="monetary_unit" value="12" disabled="">
    </select>
    <option value="12" selected="selected">EURO</option>
</div>

这里有什么问题?

2 个答案:

答案 0 :(得分:2)

select标签是自动关闭的,注意/&gt;最后:

<select data-field="monetary_unit" value="12" disabled/> <== here

答案 1 :(得分:1)

如果您对第一个片段感兴趣,您会看到“select”元素如下所示:

<select data-field="monetary_unit" value="12" disabled/>

注意结尾的“/”? 从服务器获取的HTML格式不正确,SELECT元素被视为void元素。 void元素是一个元素,没有close标记,例如<br/>