Ich versuche, einige Optionen aus einem Dropdown ausblenden. JQuerys .hide() und .show() funktionieren großartig in Firefox und Chrome, aber kein Glück im IE.Wie zu verbergen und Show SELECT-Optionen mit JQuery in IE
Irgendwelche guten Ideen?
Ich versuche, einige Optionen aus einem Dropdown ausblenden. JQuerys .hide() und .show() funktionieren großartig in Firefox und Chrome, aber kein Glück im IE.Wie zu verbergen und Show SELECT-Optionen mit JQuery in IE
Irgendwelche guten Ideen?
Von vielen möglichen Ansätzen erfordert diese Methode Browser-Sniffing (was im Allgemeinen nicht groß ist), erfordert aber nicht mehrere Kopien derselben Auswahlliste zum Ein- und Auslagern.
//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()
}
});
Kredit hierfür liegt eindeutig bei Dima Svirid hier: http://ajax911.com/hide-options-selecbox-jquery/
Dies funktioniert, aber letztlich eine bessere und sauberere Cross-Browser-Lösung ist das Erstellen, Hinzufügen und Entfernen von ausgewählten Elementen in Echtzeit mit Skript. –
Ausgezeichnete @tony :) Funktioniert perfekt! –
Dies ist unglaublich hacky, obwohl leider die einzige Lösung, die ich für ein Projekt finden könnte, die eine signifikante recode erforderlich hätte, um jede andere Methode zu implementieren. Prost. – AJReading
nur zu erwähnen, dass IE11 navigator.appName gibt 'Netscape' :) So ist es unter Berücksichtigung:
$("select option[value='your_option_value']").wrap((navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Netscape') ? '<span>' : null).hide();
Dies ist ein guter Punkt. Andere Browser können jedoch [auch hier 'Netscape' auswählen] (http://stackoverflow.com/questions/14573881/why-does-javascript-navigator-appname-return-netscape-for-safari-firefox-and- ch), so dass Ihre Laufleistung variieren kann. –
Kann wir sehen etwas code maby? –