这非常奇怪,我不确定这里发生了什么。我会尽力解释。
我有一个选择菜单,在该菜单中我缩小了结果,因此它只显示该特定模块所需的内容。要做到这一点,我抓住了所需的值,只显示那些具有这些值的选项。除非我的值超过20,否则一切似乎都能正常工作。
一开始我可以显示所有值,我有70个,但是一旦它们被隐藏,我就无法获得超过20的值甚至手动显示。
在控制台中,我尝试了一些尝试让它显示出来。 (我使用列表中的最后一个因为很容易发现)
$("select[name='Type'] option[value='70']").show().prop('disabled', false);
这是将html更改为
<option value="70" style="display: block;">Title Form Availability</option>
并删除了display:none;
,但它仍然没有显示在我的选择菜单中。
我可以为最多20的任何值编写相同的代码,它将显示在屏幕上。
选项标签可以有最大值吗?如果这是真的,为什么我可以在屏幕首次加载时将它们全部显示出来?
我对此感到困惑,并且感谢任何帮助!
我甚至有一个jsFiddel显示正在发生的事情 http://jsfiddle.net/005x7wye/
答案 0 :(得分:0)
似乎.hide()
和.show()
函数在option
元素的某些浏览器中不起作用。由于未针对select
项触发渲染,因此生成的大小不正确。
解决此问题的解决方法是使用.remove()
/ .detach()
和.append()
/ .prepend()
函数添加和删除选项。
例如:
var options = [];
$("select[name='FormTypeId'] option").each(
function() {
options.push($(this).detach());
}
);
$("select[name='FormTypeId']").prepend(options[0]);
$("select[name='FormTypeId']").prepend(options[20]);
$("select[name='FormTypeId']").prepend(options[70]);