Home > Technology > 鼠标悬浮实现显示留言内容(上)

鼠标悬浮实现显示留言内容(上)

不知道要写个什么标题,就用这个了.来过我的博客,细心的朋友可能注意到我用上个比较好玩的东西.鼠标悬浮到@someone的时候就能显示他的留言内容.这一特效我最先在Shawn的博客上看到,后来自己学了点jQuery.也整了个.我打算用两篇日志的内容来写个这个特效的实现过程.一是介绍一些jQuery的一些东西.二是,希望大家有个可以消化的时间.最后,不排除要调大家的胃口.哈哈
废话不多说.

首先,我们要对jQuery有一定的了解.这个大家Google一下吧.有点英语基础的直接到官方网站jquery.com看看. The Write Less, Do More, JavaScript Library是jquery的口号.确实如此.以前要写很多的东西,现在只要几句话就可以实现了.
在这里我推荐一些教程.
PDF jQuery 基础教程(Leeiio整理的)我没有找地址了,需要的可以到他的博客搜索下载.免去你花大价钱买书了.此人如此热心为互联网作出了巨大的贡献.哈哈.

官方的教程,一些链接.

前沿教室的视频教程,感觉也很不错.迅雷下载速度很快.就是感觉将的有点快了.看得时候要记得做些笔记.要不然看完什么也不记得了.

学习jQuery你还可以准备一个chm的帮助文档,用来速查很方便的.这个网上有很多版本,大同小异.

最后,最好的办法就是看官方的文档.由于是英文的,我看的有点眼晕烦躁.英语真的太重要了.

好了,说了不说废话的,还是废话了.如果你已经知道jQuery是什么东东了,那我们开始.
会通过一些实例来讲解.

分析内容:
首先我们要分析DOM.了解网页的结构.以inove主题为例.每一条留言都包含在li标签里.我们希望实现的功能是当链接有@并且,链接的href总是有#comment-字段.找到了共性!写成代码.这里需要正则表达式. /^#comment-/和/^@/(正则表达式都是写在//之间的).

添加Class:
用addClass即可很容易添加一个class,为什么要添加?应为留言是写在li中段落p中,而我们操作的只是p中带有特定字符的链接.
做一个练习: (Html内容如下:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script language="javascript">
$().ready(function(){
var A=/^#comment-/;
var B=/^@/;
if($('.myclass').text().match(B) && $('.myclass a').attr("href").match(A)){
alert('match works');
$('.myclass').addClass("cool");
};
});
</script>
</head>
<body>
<p class="myclass"><a href="#comment-philna">@just for test add class</a>
</body>
</html>

通过实例,我们看到p被成功的添加了一个class cool.此时它同时具有了两个class即myclass 和cool.

分析功能实现的办法.
既然是悬浮即可显示,而内容有和原来的一样,怎么做呢?jQuery给我们一个很好的东西clone.克隆一份.还是做个练习.来个实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script language="javascript">
$().ready(function(){
$('.myclass').click(function(){
$(this).clone().insertAfter('.h')});});
</script>
<style type="text/css">
</style>
</head>
<body>
<p class="myclass">test clone</p>
<p class="h">clone to here</p>
</body>
</html>

以上实例,当点击test clone的时候, clone to here的后面会不断出现test clone即myclass的内容被复制了.
好了,到这里我们把核心的两个问题已经解决了.即找到特定的内容和如何使用clone.如果你还没有学会,请回顾上面的两个实例.如果你对click和insertAfter有疑问,请查看文档.

接下来的问题,我放在下一篇日志来写.这里我什么也没有讲.哈哈,只是些基础的东西,写一篇,我会将代码全部解释一遍.到时候你一定也能实现这个小功能.如果你看完这个就茅塞顿开,那太好了.还不赶快去试试?

  1. xiaorsz Dec 16th, 2008 @ 12:46 | #1

    我来抢沙发!!! :grin:

  2. yinheli Dec 16th, 2008 @ 12:52 | #2

    @xiaorsz
    :!: 汗.

  3. 蔚蓝海 Dec 16th, 2008 @ 13:50 | #3

    yinheli :
    @xiaorsz
    汗.

    来测试下

  4. Zoll Dec 16th, 2008 @ 14:36 | #4

    继续关注! :arrow:

  5. Shawn Dec 16th, 2008 @ 14:46 | #5

    哈哈,看来你打算用不太相同的思路,不过现在来看是基本一样的,所以我和@Zoll 一样来看看。

  6. yinheli Dec 16th, 2008 @ 14:55 | #6

    @Shawn
    我下已经写好了.等等发布.思路好像是一样的.实现这个好像没有其他的什么方法.除了一些出现和隐藏的特效还有css可以下点功夫.

  7. Shawn Dec 16th, 2008 @ 15:21 | #7

    @yinheli
    呵呵,当然有其它方法,而且还很多,也许你是被我那个脚本限制住了,但是你要想到缺点,比如这个方式不能异步读取,如果评论有翻页,功能就失效了。

    你可以参考一下 commentinfoTip 的异步读取思路,融入数据库查询,还能实现更多新鲜有趣的玩意。

  8. yinheli Dec 16th, 2008 @ 15:56 | #8

    @Shawn
    高深了.谢谢提示.好玩的还多着.这个对于翻页肯定是不行了.异步读让我大开眼界了.会不会查询不较慢?有待研究啊.
    其实我看了几天jQuery就是为了实现你的效果的.从中才感叹它的强大.还有很多东西我需要从基础做起.从DOM到CSS,还有PHP我都是东搞搞西弄弄.没有系统的看过.
    崇拜懂技术的人!~

  9. Shawn Dec 16th, 2008 @ 16:23 | #9

    @yinheli
    异步读取不是什么奇妙的东西,jQuery 也有异步读取的功能,我看你这里那个最近留言也是异步读取实现的,其实有功夫研究一下就知道了。

  10. yinheli Dec 16th, 2008 @ 16:40 | #10

    @Shawn
    mg12写的插件. :mad:

  11. Shawn Dec 16th, 2008 @ 16:58 | #11
  12. 浮黑 Dec 16th, 2008 @ 21:51 | #12

    崇拜Shawn的强大,同样崇拜yinheli的专研能力

  13. yinheli Dec 16th, 2008 @ 22:11 | #13

    @浮黑
    我是盗版者… :mad:
    @Shawn
    有空了在研究…不懂了我就来麻烦你.哈哈

  14. Leeiio Feb 24th, 2009 @ 21:53 | #14

    你說,這篇文章中的我的地址不知道是否會因為我的301設置而流向我的新域名~

  15. yinheli Feb 24th, 2009 @ 22:11 | #15

    @Leeiio
    能的呀.那时候我们还不熟呢…

  16. lee Feb 10th, 2010 @ 10:58 | #16

    有新手教程么 :mrgreen:

  17. 安玉良(要火) Apr 30th, 2010 @ 21:41 | #17

    这个功能还没用过。不知这个对系统要求高不高,影不影网站打开速度?

  18. jaycn May 30th, 2010 @ 11:24 | #18

    jaycn 测试。。。学习

Submitting Comment, Give me a second...

Leave a comment

Allowed tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">
Trackbacks & Pingbacks ( 4 )
  1. Dec 16th, 2008 @ 14:59 | #1
    Pingback: 鼠标悬浮实现显示留言内容(下)
  2. Mar 14th, 2009 @ 12:03 | #2
    Pingback: iNove 中鼠标悬浮显示 @ 评论
  3. Apr 26th, 2009 @ 07:54 | #3
    Pingback: 机会就在你面前-MT ONLINE » iNove 中鼠标悬浮显示 @ 评论
  4. Sep 16th, 2009 @ 12:32 | #4
    Pingback: iNove 中鼠标悬浮显示 @ 评论 — HuāGuǒShān–老孙的博客