【发布时间】:2012-10-28 04:03:43
【问题描述】:
我有两个下拉菜单,一个会影响另一个。第一个充当第二个的过滤器。隐藏 (display:none) 选项不适用于 IE8。所以我需要实际删除选项。但我希望能够将选项重置为原始列表并再次为不同的团队过滤它们。问题是要么我删除选项并且永远不会让它们回来,要么我永远不会删除任何东西。我的直觉告诉我它与引用或将新对象分配回 DOM 有关。
第一个下拉菜单 (dd1) - html 就在我的代码中,我很难显示它。
<select id="pTeamFilter" onchange="teamChanged();" name="pTeamFilter">
<option value="0">select a Team</option>
<option value="4"> Property Team </option>
<option value="7"> Rick's Team </option>
<option value="10"> Robert's Team </option>
</select>
第二个下拉菜单 (dd2)
<select id="pAnalystFilter" name="pAnalystFilter">
<option value="0">select an Analyst</option>
<option data-teamid="7" value="682"> Clark Kent </option>
<option data-teamid="10" value="652"> Bruce Wayne </option>
<option data-teamid="10" value="7"> Peter Parker </option>
<option data-teamid="13" value="971"> Bruce Banner </option>
</select>
JS/jQ:
var analystFullArrayElement;
jQuery(document).ready(function() {
analystFullArrayElement = jQuery(document.getElementById('pAnalystFilter')).clone();
});
function teamChanged() {
//get the team id
var teamId = document.getElementById('pTeamFilter').value;
//get full list of Analysts.
var newAnalystElement = jQuery(analystFullArrayElement).clone();
jQuery('option', newAnalystElement).each(function() {
//remove unwanted analysts
if ((jQuery(this).attr("data-teamid") != teamId) && (jQuery(this).val() != 0)) {
jQuery(this).remove();
}
});
document.getElementById('pAnalystFilter').innerHTML() = jQuery(newAnalystElement).html();
//var analystElement = document.getElementById('pAnalystFilter');
//jQuery(analystElement).val(0);
}
【问题讨论】:
-
感谢右侧列出的一些相关问题,我现在在 XP 上的 IE8 中找到了可行的解决方案。
标签: jquery dom drop-down-menu options