可悲的是,对此没有满意的答案,因为 IE 是魔鬼的产物。. .
这应该很简单:
function toggleUnitsSelector(active) {
$("#unitsSelector option").hide();
$("#unitsSelector option[active='" + active + "']").show();
}
这在所有合理的浏览器中都很有效,但是,IE(至少在大多数,如果不是所有版本)不是一个合理的浏览器,因此不允许您隐藏选择选项。
所以,为了让它们不在 IE 中显示,你必须“发挥创意”,而“发挥创意”,我的意思是做一些你不应该做的事情来支持这种功能。
您可以使用的一种这样的解决方案是根据需要将两个隐藏<select>
元素分开,每个元素都包含active="T"
和active="F"
选项,并使用它们来填充主选择器(我默认为“活动”选项):
<style>
.hidden {display: none;}
</style>
<div>
<select id="unitsSelector">
<option value="1" active="T">1</option>
<option value="2" active="T">2</option>
<option value="4" active="T">4</option>
<option value="6" active="T">6</option>
<option value="10" active="T">10</option>
</select>
<select id="hiddenSelectorT" class="hidden">
<option value="1" active="T">1</option>
<option value="2" active="T">2</option>
<option value="4" active="T">4</option>
<option value="6" active="T">6</option>
<option value="10" active="T">10</option>
</select>
<select id="hiddenSelectorF" class="hidden">
<option value="3" active="F">3</option>
<option value="5" active="F">5</option>
<option value="7" active="F">7</option>
<option value="8" active="F">8</option>
<option value="9" active="F">9</option>
</select>
<input type="button" onclick="javascript: toggleUnitsSelector('T');" value="Show Active" />
<input type="button" onclick="javascript: toggleUnitsSelector('F');" value="Show Inactive" />
</div>
<script type="text/javascript">
function toggleUnitsSelector(active) {
$("#unitsSelector").empty();
$("#hiddenSelector" + active + " option").each(function() {
$(this).clone().appendTo($("#unitsSelector"));
});
}
</script>
每次单击按钮时,它都会清除显示的下拉列表并使用包含所需选项的隐藏下拉列表中的选项填充它。而且,它适用于所有浏览器。. .
您可能会使用许多其他方法(例如,将值存储在数组中并构建您想要显示的选项),但是,由于 IE 无法与其他方法很好地配合,它们都将涉及一些删除您不想显示的选项。
希望它可以更容易。. .