《jQuery Cookbook中文版》——1.13 克隆DOM元素

1.13 克隆DOM元素

1.13.1 问题
你需要克隆/复制DOM的一部分。

1.13.2 解决方案
jQuery提供clone()方法复制DOM元素。它的用法很简单,只要用jQuery函数选择DOM元素,然后在选择的元素集上调用clone()方法就可以了。结果是返回用于链接的DOM结构的一个副本,而不是原来选中的DOM元素。在下面的代码中,将克隆一个< ul>元素,然后用插入方法appendTo()将这个副本附加到DOM中。实际上,在页面上插入了与现有的< ul>完全相同的一个结构:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<ul>
<li>list</li>
<li>list</li>
<li>list</li>
<li>list</li>
</ul>
<script type="text/JavaScript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/JavaScript">
 jQuery('ul').clone().appendTo('body');
</script>
</body>
</html>

1.13.3 讨论
克隆方法对在DOM中移动DOM片段非常方便,尤其是在你打算复制和移动的不仅是DOM元素而且包括附加到克隆的DOM元素中的事件时。认真看看下面的HTML和jQuery:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<ul id="a">
<li>list</li>
<li>list</li>
<li>list</li>
<li>list</li>
</ul>
<ul id="b"></ul>
<script type="text/JavaScript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/JavaScript">
 jQuery('ul#a li')
   .click(function(){alert('List Item Clicked')})
   .parent()
     .clone(true)
        .find('li')
        .appendTo('#b')
     .end()
   .end()
   .remove();
</script>
</body>
</html>

如果在浏览器中运行这段代码,它将克隆页面上附加了单击事件的< li>元素,将新克隆的元素(包括时间)插入空的< ul>中,然后删除克隆的< ul>元素。

这对于新的jQuery开发人员来说可能有点不可思议,所以我们一起来逐步观察这段代码,以便解释这个链式方法:

1.jQuery('ul#a li')=选择id属性为a的< ui>元素,然后选择该< ui>元素里的所有< li>元素。

2..click(function(){alert('List Item Clicked')})=为每个< li>添加一个单击事件。

3..parent()=将选择集改为< ul>元素,遍历DOM。

4..clone(true)=克隆< ui>元素和所有子元素,包括附加到克隆元素中的任何事件。这通过传递给clone()方法一个布尔值true完成。

5..find('li')=现在,在克隆元素中,将元素集改为仅包含在克隆< ui>元素中的< li>元素。

6..appendTo('#b')=获取选中的克隆< li>元素,并将它们放置在id属性为b的< ui>元素中。

7..end()=返回前一个元素选择集,该集即克隆的< ui>元素。

8..end()= 返回前一个元素选择集——克隆的原始< ul>元素。

9..remove() =删除原始的< ul>元素。

对于复杂的jQuery语句来说,理解如何操纵选中的元素集或者返回前一个选择集都是至关重要的。

时间: 2024-12-30 22:41:17

《jQuery Cookbook中文版》——1.13 克隆DOM元素的相关文章

《jQuery Cookbook中文版》——1.3 用选择器和jQuery函数选择DOM元素

1.3 用选择器和jQuery函数选择DOM元素 1.3.1 问题你需要选择一个DOM元素或者一组DOM元素,以便用jQuery方法作用于这些元素. 1.3.2 解决方案当你需要从DOM中选择元素时,jQuery提供两种备选方案.这两种选项都要求使用jQuery函数(jQuery()或其别名$()).第一种选项使用CSS选择器和自定义选择器,这是最常用和最清晰的解决方案.通过向jQuery函数传递一个包含选择器表达式的字符串参数,该函数将遍历DOM并查找表达式定义的DOM节点.下面的代码是一个例

《jQuery Cookbook中文版》——导读

前言 jQuery程序库给前端开发带来了一场风暴.它极其简单的语法使曾经很复杂的任务变得轻松愉快.许多开发人员很快就为它的优雅和清晰而着迷.如果你已经开始使用这个程序库,你就已经将丰富而具有交互性的体验加入到你的项目中. jQuery的入门非常容易,但是和许多用于开发网站的工具一样,完全体会到它的广度和深度需要花费几个月甚至几年的时间.这个程序库充满了你从未想象过的特性.一旦你了解了这些特性,这些特性就能够戏剧性地改变你解决问题的方法. 本书旨在向亲爱的读者展示业界领先的前端开发人员在日常项目中

《jQuery Cookbook中文版》——1.11 删除DOM元素

1.11 删除DOM元素 1.11.1 问题 你想从DOM中删除元素. 1.11.2 解决方案 remove()方法可以用于从DOM中删除选中的元素集及其子元素.请看如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <h

《jQuery Cookbook中文版》——1.10 创建、操作和插入DOM元素

1.10 创建.操作和插入DOM元素 1.10.1 问题 你打算创建一个或者多个新的DOM元素,立刻选中这些元素加以操作,然后把它们注入到DOM中. 1.10.2 解决方案 你可能还不清楚,jQuery函数是多功能的,根据你发送的不同参数结构,一个函数能以不同的方式运行.如果以原始HTML文本字符串为参数调用函数,它将立刻创建这些元素.例如,下列语句将创建一个包装在< p>元素中的< a>元素,在< p>和< a>元素中还封装了一个文本节点: jQuery(

《jQuery Cookbook中文版》——1.4 在指定上下文中选择DOM元素

1.4 在指定上下文中选择DOM元素 1.4.1 问题 你需要引用在另一个DOM元素或者文档上下文中的单个DOM元素或者一组DOM元素,以便用jQuery方法操作这些元素. 1.4.2 解决方案 当传递CSS表达式时,jQuery函数还有第二个参数,这个参数告诉jQuery函数应该在那个上下文中根据表达式搜索DOM元素.在这种情况下,第二个参数可以是一个DOM引用.jQuery包装器或者文档.在下面的代码中有12个< input>元素.注意我是如何根据< form>元素确定具体的上

《jQuery Cookbook中文版》——1.5 过滤DOM元素包装器集

1.5 过滤DOM元素包装器集 1.5.1 问题 在jQuery包装器集中有一组选中的DOM元素,但是打算从集合中删除不匹配新指定表达式的元素,以创建一个新的操作元素集合. 1.5.2 解决方案 jQuery过滤器方法用于DOM元素的jQuery包装器集,可以排除不符合指定表达式的元素.简言之,可以用filter()方法过滤当前元素集,这是过滤器方法与jQuery查找方法的重要区别,查找方法通过寻找(使用新的选择器变量)新元素(包括当前包装器集的子元素)来缩小DOM元素的包装器集. 为了理解过滤

《jQuery Cookbook中文版》——1.14 获取、设置和删除DOM元素属性

1.14 获取.设置和删除DOM元素属性 1.14.1 问题 你已经用jQuery函数选择了一个DOM元素,需要获取或者设置该元素的属性值. 1.14.2 解决方案 jQuery提供attr()方法以获取和设置属性值.在下面的代码中,将设置< a>元素的href属性值,然后获取该值: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

《jQuery Cookbook中文版》——1.9 根据当前上下文遍历DOM获得新的DOM元素集

1.9 根据当前上下文遍历DOM获得新的DOM元素集 1.9.1 问题你已经选择了一组DOM元素,根据选择集在DOM结构树中的位置,你打算遍历DOM获得一个新的元素集以供操作. 1.9.2 解决方案jQuery提供一组方法,可以根据当前选择的DOM元素的上下文遍历DOM. 例如,查看如下的HTML片段: <div> <ul> <li><a href="#">link</a></li> <li><a

《jQuery Cookbook中文版》——1.12 替换DOM元素

1.12 替换DOM元素 1.12.1 问题你需要用新的DOM节点代替DOM中的现有节点. 1.12.2 解决方案使用replaceWith()方法,可以选择一组DOM元素进行替换.在下面的代码示例中,使用replaceWith()方法,将class属性为remove的所有元素替换为新的DOM结构: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/x