【问题标题】:hide() not working in IEhide() 在 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:忽略我之前的评论 - 你是对的 :-)
  • 一目了然,您的选项标签格式不正确。也许这就是原因?

标签: javascript jquery internet-explorer jquery-ui


【解决方案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
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-04-12
            • 1970-01-01
            • 1970-01-01
            • 2010-11-28
            • 1970-01-01
            相关资源
            最近更新 更多