Sto cercando di nascondere alcune opzioni da un menu a discesa. JQuery's .hide() e .show() funzionano alla grande in Firefox e Chrome, ma senza fortuna in IE.Come nascondere e mostrare le opzioni SELECT con JQuery in IE
Qualche buona idea?
Sto cercando di nascondere alcune opzioni da un menu a discesa. JQuery's .hide() e .show() funzionano alla grande in Firefox e Chrome, ma senza fortuna in IE.Come nascondere e mostrare le opzioni SELECT con JQuery in IE
Qualche buona idea?
Di molti approcci possibili, questo metodo richiede lo sniffing del browser (che in generale non è eccezionale) ma non richiede di avere più copie dello stesso elenco di selezione per lo scambio in entrata e in uscita.
//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()
}
});
Credito per questo sta ad angolo retto con Dima Svirid qui: http://ajax911.com/hide-options-selecbox-jquery/
Funziona, ma in definitiva una soluzione cross-browser migliore e più pulita è quella di creare, aggiungere e rimuovere gli elementi selezionati in tempo reale con lo script. –
Eccellente @tony :) Funziona perfettamente! –
Questo è incredibilmente hacky, anche se purtroppo l'unica soluzione che ho potuto trovare per un progetto che avrebbe richiesto una significativa ricodifica per implementare qualsiasi altro metodo. Saluti. – AJReading
Solo per citare che IE11 navigator.appName ritorna 'Netscape' :) Quindi, prendendo in considerazione:
$("select option[value='your_option_value']").wrap((navigator.appName == 'Microsoft Internet Explorer' || navigator.appName == 'Netscape') ? '<span>' : null).hide();
Questo è un buon punto. Tuttavia, altri browser possono [scegliere di restituire 'Netscape' anche qui] (http://stackoverflow.com/questions/14573881/why-does-javascript-navigator-appname-return-netscape-for-safari-firefox-and- ch), quindi il tuo chilometraggio può variare. –
Can vediamo del codice maby? –