利用 jQuery 改变网页元素加载顺序
icon
password
tags
date
type
category
status
summary
slug
在上一篇介绍副标题处显示嘀咕消息的文章中,我是把嘀咕的 js 放在 header.php 中,这是一个常规的方法,简单方便易实现,但这方法也存在一个很大的弊端,因为网页是按从上到下的顺序进行加载,引…
在上一篇介绍副标题处显示嘀咕消息的文章中,我是把嘀咕的 js 放在 header.php 中,这是一个常规的方法,简单方便易实现,但这方法也存在一个很大的弊端,因为网页是按从上到下的顺序进行加载,引用了一段外部 js 在头部后,自己博客首页打开速度就会受到影响,还有就是在外部 js 失效后,博客首页也就会卡在那打不开了,极大的降低了访客体验度,有没有其他方法可以解决呢?
我首先想到的方法就是把嘀咕的代码单独保存为一个 php 文件,加载到 index.php 的底部中,再利用 css 的绝对定位 absolute 把其定位到博客副标题处来显示,用 top 和 left 调整好位置后,在我笔记本屏幕上显示没有问题,但换到其他分辨率下,错位问题也就随之而来了, 具体原因请看 absolute 的定位原理:
元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
所以,这个方法被否决了,Google 之后,我发现了另外的一个方法,就是本文标题所述的内容:利用 jQuery 改变网页元素加载顺序,下面就以副标题处显示嘀咕消息为例来介绍如何利用 jQuery 来改变网页元素的加载顺序。
首先,在 header.php 里添加一个 id 为 digu 的空白 div,例如:
<div> </div>
接着,到 index.php 的<?php get_footer(); ?>下面再添加一个 id 为 digux 的 div,在里面加载之前独立保存出来的 digu.php,写出来大概是这个样子:
<div> <?php include_once("digu.php"); ?> </div>
再在下面加入本文最核心的 jQ 代码:
<script type="text/javascript"> $('#digu').html($('#digux').html()); </script> >
也可以写成:
<script type="text/javascript"> $('#digux').children().clone().appendTo('#digu'); </script>
这段代码基本意思就是把 id 为 digux 的内容复制到 digu 之中,这样我们就成功的利用 jQuery 改变了副标题处嘀咕消息的加载顺序,因为 header.php 中的 digu 是空白层,真正的内容是在 index.php 的 digux 之中,所以,浏览器最后加载的是 digux 层,这样就不会因为外部引用的 js 导致博客打开缓慢或打开不完全了。
忘了说,实现以上效果我们还需在 footer.php 里加载 jQuery 框架以及定义 digux 的 CSS 为 display:none,这就不做过多说明了,之前的文中有过介绍。
这篇文章旨在抛砖引玉,此方法适用的范围很大,大家可以尽情发掘使用。作为一个初识 jQuery 的人来说,我已经被 jQuery 的强大征服了。
文中 jQ 代码参考自 http://leeiio.me/jquery-changes-divsorder/

© Leo.N 2005-2024