kle*_*ver 9 javascript jquery internet-explorer
我在Firefox Developer Edition 38和Internet Explorer 8和9中运行以下JavaScript.
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);
Run Code Online (Sandbox Code Playgroud)
在Firefox中,我得到:

在IE中,我得到:

因此,显然在Firefox中,HTML注释作为此对象的元素被添加,但在IE中,它不是.为什么这样做,是否有错误,还是我应该创建这个对象的另一种方式?
注意:我试过,$.parseHTML(myHtmlString)但它做了同样的事情.
更新:这个答案jQuery如何处理注释元素?提供了潜在的解决方法.
Mar*_*.io 19
所以它取决于你正在使用的浏览器,但由于你传递了多个简单的标签,(作为一个例子$('<div>example html creation</div>'))jQuery让浏览器处理创建.
如果HTML比没有属性的单个标记更复杂,就像在上面的例子中那样,元素的实际创建由浏览器的.innerHTML机制处理.在大多数情况下,jQuery会创建一个新元素,并将元素的innerHTML属性设置为传入的HTML片段.
例如,Firefox正在查看您的每个< >区域,并找到2.虽然IE不关心,并将其全部处理为1(因此长度为1).
长话短说,你做得很好.这只是内部浏览器如何处理它,你不必担心任何问题!