无法为select标签追加option选项,请求技术排查帮助
问题排查与解决
问题根源
你创建的select元素目前仅存在于内存中的$whatSummary对象里,还未被插入到页面的DOM树中。此时使用全局选择器$('.js-variantSelectContent')无法找到该元素,导致option无法追加。
解决方案
有两种可行的修复方式:
方式一:直接操作select变量
先将select元素存储为变量,后续直接对这个变量进行操作,避免全局查找:
var $whatSummary = $("<p></p>"); // 先创建select并保存为变量 var $select = $("<select class='js-variantSelectContent'></select>"); $whatSummary.append($select); var remindersContent2 = { "Variant A": { "day": [ -1, 0 ], "ids": [ "D-1", "D0" ], "qm": { "a": b }, "msg": { "a": b } }, "Variant B": { "day": [ 1, 2 ], "ids": [ "D1", "D2" ], "qm": { "x": y }, "msg": { "x": y } } }; for (var key in remindersContent2) { var pkName = _dashUtils.getVariantName(remindersContent2[key]['day']); // 直接操作$select变量追加option $select.append($("<option value='" + key + "'>" + pkName + "</option>")); } // 最后务必将$whatSummary插入到页面DOM中,否则元素不会显示 // 示例:$('body').append($whatSummary);
方式二:限定选择器查找范围
在$whatSummary内部查找select元素,而不是全局查找:
var $whatSummary = $("<p></p>"); $whatSummary.append("<select class='js-variantSelectContent'></select>"); var remindersContent2 = { "Variant A": { "day": [ -1, 0 ], "ids": [ "D-1", "D0" ], "qm": { "a": b }, "msg": { "a": b } }, "Variant B": { "day": [ 1, 2 ], "ids": [ "D1", "D2" ], "qm": { "x": y }, "msg": { "x": y } } }; for (var key in remindersContent2) { var pkName = _dashUtils.getVariantName(remindersContent2[key]['day']); // 在$whatSummary内部查找select并追加option $whatSummary.find('.js-variantSelectContent').append($("<option value='" + key + "'>" + pkName + "</option>")); } // 最后务必将$whatSummary插入到页面DOM中,否则元素不会显示 // 示例:$('body').append($whatSummary);
额外注意
无论用哪种方式,最后都需要将$whatSummary插入到页面的DOM结构中(比如示例中的$('body').append($whatSummary)),否则整个容器及内部的select都不会在页面上显示。
内容的提问来源于stack exchange,提问作者Ayush jaiswal
相关产品推荐
相关产品推荐

