本文实例讲述了jQuery中DOM树操作之使用反向插入方法。分享给大家供大家参考。具体分析如下:
使用反向插入方法
这里我们先把创建的内容插人到元素前面,然后再把同一个元素插人到文档 中的另一个位置。通常,当在jQuery中操作元素时,利用连缀方法更简洁也更有效。可是我们现在没有办法这样做,因为this是.insertBefore()的目标,是.appendTo()的内容。此时,利 用反向插入方法,可以帮我们解决问题。
像.insertBefore()和.appendTo()这样的插人方法,一般都有一个对应的反向方法。反 向方法也执行相同的操作,只不过“目标”和“内容”正好相反。例如:
$('<p>Hello</p>').appendTo('#container');
与下面的代码结果一样:
$('#container').append('<p>Hello</p>');
下面我们就使用.before()代替.insertBefore()来重构代码,参见如下代码:
$(document).ready(function() { var $notes = $('<ol id="notes"></ol>') .insertBefore('#footer'); $('span.footnote').each(function(index) { $(this) .before('<sup>' + (index + 1) + '</sup>') .appendTo($notes) .wrap('<li></li>'); }); });
插入方法回调
反向插入方法可以接受一个函数作为参数,与.attr()和.css()方法类似。 这个传入的函数会针对每个目标元素调用,返回被插入的HTML字符串。在此其 实也可以使用这个技术,但由于这样就需要对每个脚注都重复一遍相同的操作, 所以还是使用一个.each()方法来得更清晰。
现在,我们可以考虑最后一步了:在正文中相应的位置创建指向匹配脚注的链接和在脚注中 创建指向正文位置的链接。为此,每个脚注需要4处标记:两个链接,一个在正文中,一个在脚 注中;以及两个id属性。因为这样一来,传人.before()方法的参数会变得复杂,所以有必要 在这里使用一种新的创建字符串的方法。
在上面的代码中,我们使用了 操作符来拼接字符串。使用+操作符虽然没有问题,但
如果要拼接的字符串太多,那看起来就会很乱。所以,我们在这里使用数组的.join()方法来构 建一个更大的数组。换句话说,下面的两行代码结果相同。
var str = 'a' + 'b' + 'c'; var str = ['a', 'b', 'c'].join('');
虽然这个例子要求输人更多字符,但使用.join()方法可以避免因要拼接的字符串过多而引 起混乱。下面我们再看看示例代码吧,如下代码就是使用.join()创建字符串的过程。
$(document).ready(function() { var $notes = $('<ol id="notes"></ol>') .insertBefore('#footer'); $('span.footnote').each(function(index) { $(this) .before([ '<sup>', index + 1, '</sup>' ].join('')) .appendTo($notes) .wrap('<li></li>'); }); });
注意,由于数组的每个元素会分别执行运算,因此不再需要把index+1放在括号里了。 使用这种技巧,可以为脚注标签添加一个指向页面底部的链接和一个唯一的id值。同时在后 面的方法中,也要给<li>元素中添加相应的id属性,以便该链接有匹配的目标,参见如下代码:
$(document).ready(function() { var $notes = $('<ol id="notes"></ol>') .insertBefore('#footer'); $('span.footnote').each(function(index) { $(this) .before([ '<a href="#footnote-', index + 1, '"id="context-', index + 1, '"class="context">', '<sup>', index + 1, '</sup></a>' ].join('')) .appendTo($notes) .wrap('<li id=Mfootnote-' + (index + 1) + IM></li>'); }); });
添加了这些标记之后,每个脚注标签就有了指向页面底部对应脚注的链接。那么所剩的就是 在脚注中创建一个指向其上下文的链接了。为此,可以使用.appendTo()的反向方 法.append(),参见如下代码:
$(document).ready(function() { var $notes = $('<ol id="notes__></ol>') .insertBefore('#footer'); $('span.footnote').each(function(index) { $(this) .before([ '<a href="#footnote-', index + 1, '"id="context-', index + 1, '"class = "context__>', '<sup>', index + 1, '</sup></a>' ].join('')) .appendTo($notes) .append([ ' (<a href="#context-', index + 1, '__>context</a>)' ].join('')) .wrap('<li id="footnote-' + (index + 1) + '__></li>'); }); });
注意,这里的href指向了脚注标签中的id。运行结果中,可以看到包含新链接的脚注。
希望本文所述对大家的jQuery程序设计有所帮助。
本文向大家介绍jQuery中DOM操作实例分析,包括了jQuery中DOM操作实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery中DOM操作的方法。分享给大家供大家参考。具体分析如下: 这里主要设计的dom操作包括:dom对象的创建(JS方式和jquery方式)、属性的修改、样式的修改、动态绑定事件 代码如下: 希望本文所述对大家的jQuery程序设计有所帮助。
本文向大家介绍jQuery中DOM树操作之复制元素的方法,包括了jQuery中DOM树操作之复制元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery中DOM树操作之复制元素的方法。分享给大家供大家参考。具体分析如下: 复制元素 前面提到的操作包括:插人新创建的元素、将元素从文档中的一个位置移动 到另一个位置,以及通过新元素来包装已有的元素。可是,有时候也会用到复制元素的操
本文向大家介绍jQuery插件制作之参数用法实例分析,包括了jQuery插件制作之参数用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery插件制作之参数用法。分享给大家供大家参考。具体分析如下: 1、无参数实现文字阴影效果 调用的例子: 2、简单的参数 调用的例子: 3、参数的映射 调用的例子: 4、默认的参数值(这个是最重要的) 调用的例子: 5、回调函数 调
本文向大家介绍使用jQuery操作DOM的方法小结,包括了使用jQuery操作DOM的方法小结的使用技巧和注意事项,需要的朋友参考一下 一.DOM操作分为3类 1.DOM Core DOM Core不是Javascript的专属品,任何一种支持DOM的编程语言都可以使用它.它的用途不仅限于处理一种使用标记语言编写出来的文档 2.HTML-DOM 比DOM Core出现的更早,它提供了一些更加简明的
本文向大家介绍jQuery DOM插入节点操作指南,包括了jQuery DOM插入节点操作指南的使用技巧和注意事项,需要的朋友参考一下 方法 描述 示例 append() 向每个匹配的元素内部追加内容 HTML代码:<p>我想说:</p> jQuery代码: $("p").append("<b>你好</b>"); 结果: <p>我想说:<b>你好</b></p> appendTo() 将所有匹配的
本文向大家介绍JavaScript学习笔记之DOM操作实例分析,包括了JavaScript学习笔记之DOM操作实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript学习笔记之DOM操作。分享给大家供大家参考,具体如下: 一、DOM概念 1. "D":Docment,指的是文档 2. “O”:Object,指的是对象,在javascript有三种对象:用户定义对象、内建