hide() 在 IE 中不起作用
Posted
技术标签:
【中文标题】hide() 在 IE 中不起作用【英文标题】:hide() not working in IE 【发布时间】:2011-07-31 01:21:34 【问题描述】:我的代码在 Firefox 中完美运行,但在 IE 中出现错误。有任何想法吗?
我有一个包含各种选项的下拉列表,我正在尝试根据所选值在另一个下拉列表中显示/隐藏选项。
function selectNames()
var Name = $("#SelectName").attr("value");
$("."+Name).each(function()
$(this).hide();
);
<select >
<option class="Name1" value="SomeName1" </option>
<option class="Name2" value="SomeName2" </option>
</select>
<select id="SelectName" onchange="javascript:selectNames();" >
<option value="Name1" </option>
<option value="Name2" </option>
</select>
任何帮助表示赞赏..
【问题讨论】:
关于错误的任何细节你可以给我们吗? 您收到错误或意外输出? 另见:Hide options in a select list using jQuery,这表明隐藏选项不是跨浏览器安全的。 @justkt:忽略我之前的评论 - 你是对的 :-) 一目了然,您的选项标签格式不正确。也许这就是原因? 【参考方案1】:确保关闭开始标签。尝试使用这个:
<select>
<option class="Name1" value="SomeName1" />
<option class="Name2" value="SomeName2" />
</select>
<select id="SelectName" onchange="javascript:selectNames();" >
<option value="Name1" />
<option value="Name2" />
</select>
Seems to work for me in IE8.
【讨论】:
【参考方案2】:在 IE 和 Chrome 中不起作用
check out in IE or Chrome
您可以做的最好的选择是删除选项而不是隐藏它。(您应该在删除之前保留原始选项的副本。)
var copy = $("."+Name).clone();
function selectNames()
$("#thefirstselect option").remove();
copy.appendTo("#thefirstselect");
var Name = $("#SelectName").val();
$("."+Name).each(function()
$(this).remove();
);
【讨论】:
【参考方案3】:您的标记不正确。你是每个选项打开标签没有正确关闭。
此外,规范没有指定对单个选项标签的 CSS 更改,尽管它确实适用于 Firefox。
简单来说,您不能隐藏单个输入 - 在这种情况下,您必须将它们删除。
【讨论】:
【参考方案4】:如果这是直接复制和粘贴,那么您需要关闭选择选项,如下所示:
<option value="Name1">Name1</option>
<option value="Name2">Name2</option>
【讨论】:
【参考方案5】:我建议您显示和隐藏两个选择。显示和隐藏选项听起来很冒险。
此外,请确保将隐藏选择设置为 attr('disabled','disabled')
/disabled="disabled"
,然后在取消隐藏时使用 removeAttr('disabled')
撤消它。这是为了防止隐藏的选择在您有多个具有相同name="..."
的选择时将数据发布到服务器。
如果您必须使用单选,您可能需要appendTo
/remove
选项,但这取决于您。如果显示/隐藏在所有浏览器中都有效,那就去吧。
【讨论】:
【参考方案6】:很遗憾,你不能。 IE 不支持隐藏选择中的单个选项,Chrome 或 Opera 也不支持。 此功能不跨浏览器。
您可以做的是删除该选项并稍后再次添加...
【讨论】:
什么? ie不支持隐藏? @corroded - 它不支持隐藏选择中的单个选项。这不是跨浏览器功能,请参阅here。以上是关于hide() 在 IE 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章