我正在尝试使用easyDropDown.js添加来设置我的投递箱的样式,但我遇到了一个问题。我的下拉框不是静态创建的。加载网页时,使用数组附加下拉列表。这个下拉框出现在我网站的多个页面上,我正在尝试进行设置,以便当用户在一个页面上进行选择时,该选择会进入每个页面。
以下是对代码正在执行的操作的逐步演绎:
当页面启动时,它会附加easyDropDown列表,以便所有值都存在。
$('#homeSelectSite').empty();
s = "";
s = "<option value='site'>Site</option>";
for (var i = 0; i < Sites.length; i++) {
s = s + "<option value='" + Sites[i].SiteID + "'>" + Sites[i].SiteID + " " + Sites[i].SiteName + "</option>";
}
$('#homeSelectSite').append(s);
注意:站点是我用来填充下拉框的数组。
现在,一旦创建了下拉框列表,我需要设置选择的值。如果用户在另一页上进行了选择,则在sessionStorrage中设置此值。
$('#homeSelectSite').easyDropDown();
var selectedSite = sessionStorage.getItem("CurrentSiteID");
if (selectedSite != undefined && selectedSite != null) {
$('#homeSelectSite').val(selectedSite);
}
所以代码正在做的是:清空当前的drop box,用新值附加它,用easyDropDown设置样式,最后设置所选的值。出于某种原因,这不起作用。追加和样式工作正常,但它不允许我设置选定的值。我也试过用这个:
$('#homeSelectSite').easyDropDown('select', selectedSite);
我有无法设置所选值的原因吗?如果我删除与easyDropDown相关的所有内容,这一切都有效。
答案 0 :(得分:2)
今天我遇到了类似的问题,因为我试图使用easyDropDown设置下拉列表的选定值。
我所做的是找出待选选项的索引,而不是按值选择。
在你的情况下,它会是这样的:
var index = 0;
$('#homeSelectSite option').each(function(i, item) {
if ($(this).val() === selectedSite) {
index = i;
}
});
$('#homeSelectSite').easyDropDown('select', index);
希望它有所帮助。
答案 1 :(得分:0)
看起来easyDropDown 2.1.4中存在一个错误
第326行应改为:
index = self.$select.find('option[value='+index+']').index() - 1;
为:
index = self.$select.find('option[value='+index+']').index();
这只能解决easyDropDown选择上一个项而不是你想要的项的事实,但我不确定这会解决你的问题。是的,你必须使用插件中的'select'方法而不是'val'。