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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

hide() 和 on() 在 Internet Explorer (IE) 上不起作用

为啥这个下拉菜单在 IE 中不起作用?

flex 属性在 IE 中不起作用

.eot 在 IE 中不起作用

表格的边框在 IE 中不起作用

Angular 1.3 动画在 Firefox 中不起作用