【发布时间】:2015-12-18 13:27:32
【问题描述】:
我在下面的代码中创建了动态选择元素。该控件显示在浏览器上,没有问题。但是,我选择的选项不是屏幕上选择的选项。屏幕始终显示最后一项。
奇怪的是,如果我查看源代码,“选择”属性在我选择的选项上。但是,正在显示最后一个选项。
我尝试使用 .attr("selected", value === selectOption.SelectedValue)) 并且甚至没有在选项元素上添加“selected”属性。
似乎唯一可行的方法是在将 Select Element 附加到我的 div 标签 (commonSubjectivesWindow) 之后选择值。但这对我来说似乎很老套。
在谷歌上搜索这个问题已经好几个小时了。任何建议都会有所帮助。
function createSelectElement(commonSubjective, selectOption) {
var name = "select" + commonSubjective.Id;
var selectElement = $("<select>").attr("name", name);
//Tried, does not work
//$.each(selectOption.Options, function (key, value) {
// selectElement.append($("<option>").val(value).text(value).prop("selected", value === selectOption.SelectedValue));
//});
$.each(selectOption.Options, function (key, value) {
selectElement.append($("<option>").val(value).text(value).attr("selected", value === selectOption.SelectedValue));
});
return selectElement;
}
function formatCommonSubjectiveText(commonSubjective) {
if (commonSubjective.SelectOptions.length > 0) {
var i = 0;
$.each(commonSubjective.SelectOptions, function() {
var selectElement = createSelectElement(commonSubjective, this);
var placeHolder = "{" + i + "}";
commonSubjective.Text = commonSubjective.Text.replace(placeHolder, selectElement.prop("outerHTML"));
i++;
});
}
return commonSubjective.Text;
}
function loadCommonSubjectives() {
var commonSubjectivesJson = JSON.parse($("#commonSubjectivesHidden").val());
$.each(commonSubjectivesJson, function () {
$("#commonSubjectivesWindow").append($("<span>").append(formatCommonSubjectiveText(this)).prepend(
$("<input>").attr("name", "CommonSubjectivities").attr("type", "checkbox").val(this.Id).prop("checked", this.IsSelected)
).after("</br></br>"));
});
}
【问题讨论】:
-
你能给它链接一个小提琴吗?
标签: javascript jquery html