2015-10-15 76 views
-1

该代码从选择框中删除所有选项并更新它们。问题是每个选项的值没有正确更新。字符串插值不按预期方式工作,但字符串不止一个字

发生了什么是每个选项的值更新只是一个字符串,这是不正确的第一个字。我希望用整个字符串更新值。

代码:

service_selection.children().remove(); 
$.each(data, function(index,value){ 
    service_selection.append("<option value=" + value.description + ">" + value.description + "</option>"); 
}); 

例子:比方说,value.description =的 “Hello World富吧”。

html显示它只将选项的值“Hello”指定为选项的值,而不是“Hello World Foo Bar”。

更新后当前的HTML看起来像这样:

<option value="Hello" World Foo Bar>Hello World Foo Bar</option> 
+0

如果不加引号,属性值在第一空间突破。基本的HTML。 – epascarello

回答

4

你忘了添加“为实际的HTML值(它被包围”),therfor将出现第一个空格后切。

正确的代码应该是这样的:

service_selection.children().remove(); 
$.each(data, function(index,value){ 
    service_selection.append("<option value='" + value.description + "'>" + value.description + "</option>"); 
}); 

(注意单曲“I值后添加=和前>)

1

你必须在你的当前代码报价的问题。

我个人做这样的事情:

var opts = ""; 
$.each(data, function(index, value) { 
    opts += '<option value="' + value.description + '">' + value.description + '</option>'; 
}); 
service_selection.html(opts); 
+0

很好的捕获。谢谢。我遇到了一个问题,其中一个描述有一个撇号。您对更改报价的评论修复了它。 – Neil