jQuery( html [, ownerDocument ] )
描述: 根据提供的原始 HTML 标记字符串,动态创建由 jQuery 对象包装的 DOM 元素。
添加的版本: 1.0jQuery( html [, ownerDocument ] )
html
类型: String
用于动态创建DOM元素的HTML标记字符串,不是XML。
ownerDocument
类型: document
一个文档的新元素将被创建。
添加的版本: 1.4jQuery( html, attributes )
html
类型: String
一个单标记的HTML 元素字符串(例如 <div/> or <div></div>).
attributes
类型: PlainObject
访问新创建元素的属性,事件和方法。
Creating New Elements(创建新元素)
如果一个字符串做为一个参数传递个$(), jQuery 检查这个属性是否看上去像HTML (也就是, <tag ... > 之类的元素在这个字符串中)。如果没有, 这个字符串将被解释为选择器, 作为解析上下文。 但是如果该字符串是一个 HTML 代码片断,那么jQuery 就会根据它尝试创建一个新的 DOM 元素。然后jQuery对象创建并返回引用的这些元素。我们可以在这个对象上执行一些常用的jQuery方法:
$( "<p id='test'>My <em>new</em> text</p>" ).appendTo( "body" );
一个字符串显式解析成HTML,请使用$.parseHTML() 方法.
在上面的例子中,当一个HTML比一个没有属性的简单标签复杂的时候,实际上,创建元素的处理是利用了浏览器的 innerHTML 机制。特别说明,jQuery创建一个新的<div>元素,并且设置innerHTML属性为传入的HTML代码片段。当参数是一个单标签,就像 $('<img />') or $('<a></a>'),jQuery将使用javasrcipt原生的 createElement()函数创建这个元素。
当传入一个复杂的html,一些浏览器可能不会产生一个完全复制HTML源代码所提供的DOM。正如前面提到的,jQuery使用的浏览器.innerHTML属性来解析传递的HTML并将其插入到当前文档中。在此过程中,一些浏览器过滤掉某些元素,如<html>, <title>, 或 <head>的元素。其结果是,被插入元素可能不是传入的原始的字符串。
不过,这些被过滤掉的标签有限的。有些浏览器可能不完全复制所提供的HTML源代码生成DOM。例如,Internet Explorer的版本8之前转换所有链接的href属性为绝对URL路径,和Internet Explorer第9版之前,不增加一个单独的兼容层的情况下,将无法正确处理HTML5元素。
为了确保跨平台的兼容性,代码片段必须是良好的。标签可以包含其他元素,但需要搭配的结束标记:
$( "<a href='http://jquery.com'></a>" );
标签不能包含元素可能很快封闭,当然也可以不这样做:
$( "<img />" );
$( "<input>" );
当传递HTML给jQuery()时,文本节点并不必当作 DOM 元素来看待。除了一些方法(如内容.content()),它们一般都被忽略或删除。例如:
var el = $( "1<br/>2<br/>3" ); // returns [<br>, "2", <br>]
el = $( "1<br/>2<br/>3 >" ); // returns [<br>, "2", <br>, "3 >"]
这是预期的结果。
从jQuery 1.4开始,给jQuery() 的第二个参数可以接受一个简单的对象组成的一个属性集合,可以传递.attr()方法。
重要提示: 如果第二个参数被传递,第一个参数中的HTML字符串 必须代表一个没有任何属性简单的元素。 从 jQuery 1.4开始,我们可以传递一个对象作为第二个参数。 这个参数接受一个属性的集合,这些可以传递给.attr() 方法。此外,一些event type(事件类型)能通过, 而且后面的jQuery方法能够调用: val, css, html, text, data, width, height, or offset。
|