Sto facendo funzionare il seguente JavaScript sia Firefox Developer Edition 38 e Internet Explorer 8 e 9.
console.log('+++++++++++++++++++++++++++++++');
console.log('jquery version = ' + $.fn.jquery);
var myHtmlString = "<!-- my comment -->" +
"<optgroup label='my label'>" +
"<option value='1'>option one</option>" +
"</optgroup>";
console.log($(myHtmlString));
console.log($(myHtmlString)[0]);
console.log($(myHtmlString)[1]);
console.log($(myHtmlString).length);
In Firefox, ottengo:
In IE, ottengo:
Quindi, a quanto pare in Firefox, un commento HTML i s viene aggiunto come elemento di questo oggetto ma in IE, non lo è. Perché questo si comporta in questo modo, c'è un bug o c'è un altro modo in cui dovrei creare questo oggetto?
NOTA: Ho provato $.parseHTML(myHtmlString)
ma fa la stessa cosa.
AGGIORNAMENTO: Questa risposta How does jQuery treat comment elements? fornisce una soluzione alternativa.
Che cosa è '[oggetto oggetto]' nel registro IE? Sei sicuro che non sia il tuo commento. –
@JonathanWood Guarda l'output differente di '$ (myHtmlString) .length' – ceejayoz
Non riesco a trovare un riferimento, ma i commenti creati in javascript non sono supportati in IE se non ricordo male, a meno che non vengano creati con' documento. createComment', e non credo che jQuery usi quello – adeneo