首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery隐藏选项在IE和Safari中不起作用

JQuery隐藏选项在IE和Safari中不起作用
EN

Stack Overflow用户
提问于 2011-12-04 14:27:43
回答 7查看 22.3K关注 0票数 17

我尝试使用.hide()在一个下拉框中隐藏一些选项。这在firefox和chrome中运行得很好,但在IE和Safari中就不行了。我的原始代码更复杂,但我已经将其缩小到以下范围。

我尝试了几种组合,但都不起作用。

.hide()可以工作,但由于某种原因,选项标记内的内容不能工作。

有人能帮帮我吗?这快把我逼疯了。非常感谢您能抽出时间来帮助我们!

下面是我的jscript:

代码语言:javascript
复制
    <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(".wrapper1").hide();
        });
    </script>

下面是HTML:

代码语言:javascript
复制
                <label for="prodName">Product Name:</label> 
                <input type="text" name="prodName" /><br />

                <label for="candy">Candy:</label> 
                <select name="candy" id="candy">
                        <option value="0" class="blank" selected="selected"></option><!-- PHP and JS validators should not allow "0" here. User should be prompted to select something. -->
                        <option value="1" class="wrapper1">Hide this 1</option>
                        <option value="2" class="wrapper1">Hide this 2</option>
                        <option value="3" class="wrapper2">Show this 1</option>     
                </select><br />
EN

回答 7

Stack Overflow用户

发布于 2013-06-18 07:20:51

这将会起作用..将.show更改为.showOption和.hideOption。然而,这在IE中仍然有些糟糕,因为在firefox中,你可以让它隐藏一个被选中的选项。因此,如果"Select One“显示并隐藏。Firefox仍然会显示“选择一个”。

代码语言:javascript
复制
$.fn.showOption = function() {
this.each(function() {
    if( this.tagName == "OPTION" ) {
        var opt = this;
        if( $(this).parent().get(0).tagName == "SPAN" ) {
            var span = $(this).parent().get(0);
            $(span).replaceWith(opt);
            $(span).remove();
        }
        opt.disabled = false;
        $(opt).show();
    }
});
return this;
}
$.fn.hideOption = function() {
this.each(function() {
    if( this.tagName == "OPTION" ) {
        var opt = this;
        if( $(this).parent().get(0).tagName == "SPAN" ) {
            var span = $(this).parent().get(0);
            $(span).hide();
        } else {
            $(opt).wrap("span").hide();
        }
        opt.disabled = true;
    }
});
return this;
}
票数 11
EN

Stack Overflow用户

发布于 2011-12-04 14:39:26

你是对的。有些浏览器就是不让你隐藏option元素。您可能需要删除它们。

不过,也许更好的(或者至少是另一种)可能是禁用它们。

代码语言:javascript
复制
$(".wrapper1").prop('disbled', true);
票数 8
EN

Stack Overflow用户

发布于 2011-12-04 14:49:58

您必须删除option元素..许多浏览器都不支持使用display:none隐藏它们。

隐藏

代码语言:javascript
复制
var elems = $(".wrapper1").remove();

显示

代码语言:javascript
复制
$('#candy').append(elems);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8373735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档