加载中...

jQuery(html,[ownerDocument])1.8*


概述    jQuery( html [, ownerDocument ] )

返回值:jQuery

描述:根据提供的原始 HTML 标记字符串,动态创建由 jQuery 对象包装的 DOM 元素。

  • V : 1.0jQuery( html [, ownerDocument ] )

    • html
      类型: String
      用于动态创建DOM元素的HTML标记字符串,不是XML。
    • ownerDocument
      类型: document
      一个文档的新元素将被创建。
  • V : 1.4jQuery( html, attributes )

    • html
      类型: String
      一个单标记的HTML 元素字符串(例如 <div/> or <div></div>).
    • attributes
      类型: PlainObject
      访问新创建元素的属性,事件和方法。

根据提供的原始 HTML 标记字符串,动态创建由 jQuery 对象包装的 DOM 元素。同时设置一系列的属性、事件等。

你可以传递一个手写的 HTML 字符串,或者由某些模板引擎或插件创建的字符串,也可以是通过 AJAX 加载过来的字符串。但是在你创建 input 元素的时会有限制,可以参考第二个示例。当然这个字符串可以包含斜杠 (比如一个图像地址),还有反斜杠。当你创建单个元素时,请使用闭合标签或 XHTML 格式。例如,创建一个 span ,可以用$("<span/>") $("<span></span>") ,但不推荐 $("<span>")。在jQuery 中,这个语法等同于$(document.createElement("span"))

在jQuery 1.8中,通过$(html,props), 您可以使用任何jQuery对象的方法或插件。在此之前,你只能使用一个方法名的短名单,并有没有成文的方式添加到列表中。然而,请注意,这可能会导致你的代码的行为改变,如果插件添加后,有相同的名称作为HTML属性。

Creating New Elements(创建新元素)

如果一个字符串做为一个参数传递个$(), jQuery 检查这个属性是否看上去像HTML (也就是, <tag ... > 之类的元素在这个字符串中)。如果没有, 这个字符串将被解释为选择器, 作为解析上下文。 但是如果该字符串是一个 HTML 代码片断,那么jQuery 就会根据它尝试创建一个新的 DOM 元素。然后jQuery对象创建并返回引用的这些元素。我们可以在这个对象上执行一些常用的jQuery方法:

$( "<p id='test'>My <em>new</em> text</p>" ).appendTo( "body" );

一个字符串显式解析成HTML,请使用$.parseHTML() 方法.

默认情况下,元素会被创建到加载了jQuery库文件的那个文档的.ownerDocument下。 元素被注入到一个不同的文档应使用那个文档创建,例如:$("<p>hello iframe</p>", $("#myiframe").prop("contentWindow").document).

在上面的示例中,当一个HTML比一个没有属性的简单标签复杂的时候,实际上,创建元素的处理是利用了浏览器的 .innerHTML 机制。特别说明,jQuery创建一个新的<div>元素,并且设置innerHTML属性为传入的HTML代码片段。当参数是一个单标签,就像 $( "<img />" )$( "<img>" ), $( "<a></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 = $( "<br>2<br>3" ); // returns [<br>, "2", <br>]
el = $( "<br>2<br>3 >" ); // returns [<br>, "2", <br>, "3 &gt;"]

这是预期的结果。 从jQuery1.9.0开始(除非使用jQuery Migrate plugin(jQuery迁移插件)), jQuery()方法要求的HTML字符串是以一个<(小于号)开头的字符串(即文本节点不能出现在HTML字符串的前面)。

从jQuery 1.4开始,给jQuery() 的第二个参数可以接受一个简单的对象组成的一个属性集合,可以传递.attr()方法。

重要提示: 如果第二个参数被传递,第一个参数中的HTML字符串 必须代表一个没有任何属性简单的元素。 从 jQuery 1.4开始,一些event type(事件类型)可以传递进来, 而且能够调用以下jQuery方法: val, css, html, text, data, width, height, or offset。

从 jQuery 1.8开始, 任何jQuery实例方法(一个jQuery.fn的方法),可以被用来作为一个该对象的属性传递给第二个参数:

$( "<div></div>", {
"class": "my-div",
on: {
touchstart: function( event ) {
// do something
}
}
}).appendTo( "body" );

在这个对象中,"class"(类)的名称必须使用引号括起来,因为它是一个JavaScript保留字,还有不能使用"className",因为它是指的DOM属性(property),不是属性(attribute)。

虽然第二个参数是方便,它的灵活性可能会导致意想不到的后果(例如$("<input>", {size: "4"})调用.size()方法,代替设置size属性)。上面的代码块可以被写入,代替为:

$( "<div></div>" )
.addClass( "my-div" )
.on({
touchstart: function( event ) {
// do something
}
}).appendTo( "body" );

示例

实例

动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中。在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性。

jQuery 代码:
$("<div><p>Hello</p></div>").appendTo("body");

实例

创建一个 <input> 元素必须同时设定 type 属性。因为微软规定 <input> 元素的 type 只能写一次。

jQuery 代码:
// 在 IE 中无效:
$("<input>").attr("type", "checkbox");
// 在 IE 中有效:
$("<input type='checkbox'>");

实例

动态创建一个 div 元素(以及其中的所有内容),并将它追加到 body 元素中。在这个函数的内部,是通过临时创建一个元素,并将这个元素的 innerHTML 属性设置为给定的标记字符串,来实现标记到 DOM 元素转换的。所以,这个函数既有灵活性,也有局限性。

jQuery 代码:
$("<div>", {
  "class": "test",
  text: "Click me!",
  click: function(){
    $(this).toggleClass("test");
  }
}).appendTo("body");

实例

创建一个 <input> 元素,同时设定 type 属性、属性值,以及一些事件。

jQuery 代码:
$("<input>", {
  type: "text",
  val: "Test",
  focusin: function() {
    $(this).addClass("active");
  },
  focusout: function() {
    $(this).removeClass("active");
  }
}).appendTo("form");

实例

查找文档中第一个表单中的所有单选按钮。

jQuery 代码:
$("input:radio", document.forms[0]); 

实例

查找 Ajax 返回的 XML 文档中的所有 div 元素。

jQuery 代码:
$("div", xml.responseXML);

实例

将页面的背景色设置成黑色。

jQuery 代码:
$(document.body).css( "background", "black" );

实例

隐藏 myForm 表单中的所有 input 元素。

jQuery 代码:
$(myForm.elements).hide()

实例

查找所有 div 下的 p 元素,并为它们加上边框

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <p>one</p> <div><p>two</p></div> <p>three</p>
<script>
$( "div > p").css("border", "1px solid gray");
    </script>
 
</body>
</html>

运行一下


还没有评论.