为什么以下创建DOM元素的方式不适用于IE7和IE8中的jQuery?

Jon*_*ler 3 jquery internet-explorer jquery-selectors internet-explorer-8

有时,将DOM元素创建为jQuery对象以用作选择器和上下文非常有用.

在下面的工作 IE7,IE8和使用jQuery 1.6.2/3的所有其他浏览器-但请注意,document.createElement是用来做这个work.in IE7和IE8.

   jQuery('body').append('<div id="basic-render-test"> </div>');

   var new_object = {};
   new_object.wrapper = '<span id="adfasdfasdfwersadfas3rs">';
   //alert(typeof new_object.wrapper);

   if (jQuery.browser.msie && jQuery.browser.version <= 8.0){ 
       new_object.el = document.createElement(new_object.wrapper);
   } else  {
       new_object.el = jQuery(new_object.wrapper);
   }

   new_object.render_into = "#basic-render-test";
   jQuery(new_object.render_into).append( new_object.el );
   some_html = '<DIV id="type-m" class="translate"> HELLO IE</DIV>';
   jQuery(new_object.el).html( some_html );
Run Code Online (Sandbox Code Playgroud)

声明的DOM类型是HTML 5

<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

Lep*_*eus 6

您需要提供实际有效的html代码才能正确创建.在您的示例中,您的span标记未关闭,这导致在IE中评估时代码无效,而其他浏览器倾向于自动修复它.

更换

new_object.wrapper = '<span id="adfasdfasdfwersadfas3rs">';
Run Code Online (Sandbox Code Playgroud)

new_object.wrapper = '<span id="adfasdfasdfwersadfas3rs"></span>';
Run Code Online (Sandbox Code Playgroud)

这个例子在IE 7和8上运行完美