How to Hide and Show SELECT Options with JQuery in IE

前端 未结 3 757
后悔当初
后悔当初 2021-01-18 00:12

I\'m trying to hide some options from a drop down. JQuery\'s .hide() and .show() work great in Firefox and Chrome, but no luck in IE.

Any g

相关标签:
3条回答
  • 2021-01-18 00:29

    I found a rather simple solution, although the options will not be hidden but disabled on IE.

    $('#delivery_time option[value="06:30"]').removeAttr('disabled').show();       // To Show/Enable
    $('#delivery_time option[value="06:30"]').attr('disabled', 'disabled').hide(); // To Hide/Disable
    

    Here is the source where I stumbled upon these 2 lines: IT Support Guides - Internet Explorer – How to hide select options using jQuery

    0 讨论(0)
  • 2021-01-18 00:42

    Just to mention that IE11 navigator.appName returns 'Netscape' :) So taking it into consideration:

    $("select option[value='your_option_value']").wrap((navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Netscape') ? '<span>' : null).hide();
    
    0 讨论(0)
  • 2021-01-18 00:50

    Hide and Show the Options based on Browser detection

    Of many possible approaches, this method requires browser sniffing, which can be unstable, but on the other hand with this approach we don't have to swap in and out multiple copies of the same select list.

    //To hide elements
    $("select option").each(function(index, val){
        if ($(this).is('option') && (!$(this).parent().is('span')))
            $(this).wrap((navigator.appName == 'Microsoft Internet Explorer') ? '<span>' : null).hide();
    });
    
    //To show elements
    $("select option").each(function(index, val) {
        if(navigator.appName == 'Microsoft Internet Explorer') {
            if (this.nodeName.toUpperCase() === 'OPTION') {
                var span = $(this).parent();
                var opt = this;
                if($(this).parent().is('span')) {
                    $(opt).show();
                    $(span).replaceWith(opt);
                }
            }
        } else {
            $(this).show(); //all other browsers use standard .show()
        }
    });
    

    Credit for this lies squarely with Dima Svirid here: http://ajax911.com/hide-options-selecbox-jquery/

    0 讨论(0)
提交回复
热议问题