Ho riscontrato un caso strano in cui, per quanto ne so, due cose che dovrebbero comportarsi allo stesso modo si comportano in modo diverso.Il menu di selezione aggiunto dinamicamente con la prima opzione disabilitata seleziona automaticamente la seconda opzione
Se sono presenti due menu di selezione in una pagina, un menu statico codificato in codice HTML e uno aggiunto al corpo in fase di esecuzione con JQuery. Quindi disabilito la prima opzione in entrambi i menu di selezione. Quando vengono visualizzati entrambi i menu hanno disattivato le loro prime opzioni come previsto, tuttavia il menu aggiunto in modo dinamico ha automaticamente impostato il valore sulla seconda opzione mentre il menu statico ha ancora il primo selezionato.
http://jsfiddle.net/hm3xgkLg/1/
HTML:
<select class="dropMenu">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">fourth</option>
</select>
Javascript:
var arr = [
{val : 1, text: 'One'},
{val : 2, text: 'Two'},
{val : 3, text: 'Three'},
{val : 4, text: 'Four'}
];
var sel = $('<select class="dropMenu">').appendTo('body');
$(arr).each(function() {
sel.append($("<option>").attr('value',this.val).text(this.text));
});
$('.dropMenu option:nth-child(1)').attr('disabled', 'disabled');
Perché questi due apparentemente identiche selezionare i menu comportano in modo diverso? Vorrei che entrambi si comportassero come il menu statico (mantenere selezionato il primo valore) è possibile?
Va anche notato che ho provato a racchiudere la funzione di disabilitazione in $ (document) .ready per escludere un problema del menu non ancora eseguito, ma non ci sono stati cambiamenti. Ho anche provato ad avere due classi distinte con due chiamate separate per disabilitare le opzioni per assicurarmi che non si scontrasse in qualche modo senza alcun cambiamento.
L'approccio nella risposta accettata qui sembra funzionare anche http://stackoverflow.com/questions/14227611/jquery-force-display- di-modified-dom ma non capisco del tutto perché. http://jsfiddle.net/hm3xgkLg/4/ – heisenberg
prova a impostare l'opzione '$ ('. dropMenu: nth-child (1)'). attr ('disabled', 'disabled');' in setInterval –