基于jQuery实现的QQ表情插件

 更新时间:2015年08月25日 17:23:29   投稿:mrr  
大家在qq聊天或者是玩微信时发表自己的心情,都会允许加入表情,大家知道qq表情是怎么实现的吗,接下来,通过本篇文章给大家实例讲解基于jQuery实现的QQ表情插件,需要的朋友可以参考下

不废话了,先给大家展示效果图:

查看演示 下载源码

我们在QQ聊天或者发表评论、微博时,会有一个允许加入表情的功能,点击表情按钮,会弹出一系列表情小图片,选中某个表情图片即可发表的丰富的含表情的内容。今天和大家分享一款基于jQuery的QQ表情插件,您可以轻松将其应用到你的项目中。

HTML

首先在html页面的head中引入jQuery库文件和QQ表情插件jquery.qqFace.js文件。

<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="jquery.qqFace.js"></script> 

然后在body中加入以下html代码:

<div id="show"></div> 
<div class="comment"> 
 <div class="com_form"> 
  <textarea class="input" id="saytext" name="saytext"></textarea> 
  <p><span class="emotion">表情</span><input type="button" class="sub_btn" value="提交"></p> 
 </div> 
</div> 

页面中有一个输入框,用来输入要发表的内容,还有一个表情按钮,点击此按钮可以调用表情图片,完了就可以点击“提交”按钮发布带表情的内容了。

CSS

我们用CSS来美化页面,关键是表情按钮图片span.emotion的鼠标滑上与移开效果,以及调用表情插件后,显示的表情.qqFace面板效果,请看代码:

.comment{width:680px; margin:20px auto; position:relative} 
.comment h3{height:28px; line-height:28px} 
.com_form{width:100%; position:relative} 
.input{width:99%; height:60px; border:1px solid #ccc} 
.com_form p{height:28px; line-height:28px; position:relative} 
span.emotion{width:42px; height:20px; background:url(icon.gif) no-repeat 2px 2px; 
padding-left:20px; cursor:pointer} 
span.emotion:hover{background-position:2px -28px} 
.qqFace{margin-top:4px;background:#fff;padding:2px;border:1px #dfe6f6 solid;} 
.qqFace table td{padding:0px;} 
.qqFace table td img{cursor:pointer;border:1px #fff solid;} 
.qqFace table td img:hover{border:1px #0066cc solid;} 
#show{width:680px; margin:20px auto} 

我们在domo中还用CSS3设置了提交按钮的样式,其代码在本文中不做解释,您可以下载代码了解下。

jQuery

当我们点击页面输入框下方那个笑脸时,触发调用qqface表情插件,简单几行就搞定。

$(function(){ 
 $('.emotion').qqFace({ 
  assign:'saytext', //给输入框赋值 
  path:'face/' //表情图片存放的路径 
 }); 
 ... 
}); 

当选择表情图片后,输入框中会插入一段如[em_5]之类的代码,代表插入的表情图片,实际应用中,点提交按钮后应该将这段表情代码连同其他内容插入到数据表中。而在页面显示的时候,我们应该将表情代码替换成真正的图片显示在页面上。下面的代码是插入表情图片后,点击提交按钮,使用javascript自定义函数将表情代码替换并显示:

$(function(){ 
 ... 
 $(".sub_btn").click(function(){ 
  var str = $("#saytext").val(); 
  $("#show").html(replace_em(str)); 
 }); 
}); 
function replace_em(str){ 
 str = str.replace(/\</g,'<;'); 
 str = str.replace(/\>/g,'>;'); 
 str = str.replace(/\n/g,'<;br/>;'); 
 str = str.replace(/\[em_([0-9]*)\]/g,'<img src="face/$1.gif" border="0" />'); 
 return str; 
} 

如果您想用PHP代码来正则替换表情图片的话,可以使用以下函数:

function ubbReplace($str){ 
 $str = str_replace(">",'<;',$str); 
 $str = str_replace(">",'>;',$str); 
 $str = str_replace("\n",'>;br/>;',$str); 
 $str = preg_replace("[\[em_([0-9]*)\]]",">img src=\"face/$1.gif\" />",$str); 
 return $str; 
}

以上内容就是本文对基于jQuery实现的QQ表情插件的详细介绍,希望大家喜欢。

相关文章

  • jQuery学习笔记之toArray()

    jQuery学习笔记之toArray()

    jquery.toArray()是将jQuery对象转换成数组,我们来分析下
    2014-06-06
  • 原生js和jquery实现图片轮播淡入淡出效果

    原生js和jquery实现图片轮播淡入淡出效果

    本文给大家分享的是使用原生的js和jQuery2种方法,分别实现图片轮播的淡入淡出效果的代码,非常实用,也方便小伙伴们对比分析,希望对大家学习js和jq能够有所帮助。
    2015-04-04
  • jQuery CSS3自定义美化Checkbox实现代码

    jQuery CSS3自定义美化Checkbox实现代码

    这篇文章主要为大家详细介绍了jQuery CSS3自定义美化Checkbox实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 基于jquery自定义图片热区效果

    基于jquery自定义图片热区效果

    前阵子接到个需求,联通网上营业厅经常需要专题页面做宣传,但是由于专题页面会有按钮,以及各个图片的链接,省分的人没有html基础,没人维护,量又比较大,需要开发出一个可自定义图片热区链接的后台,于是就有了这个
    2012-07-07
  • 简单的jquery左侧导航栏和页面选中效果

    简单的jquery左侧导航栏和页面选中效果

    这篇文章主要介绍一个简单的jquery左侧导航栏和页面选中效果,此功能需引用jquery,需要的朋友可以参考下
    2014-08-08
  • 一个简单的jquery进度条示例

    一个简单的jquery进度条示例

    这篇文章主要介绍了一个简单的jquery进度条示例,需要的朋友可以参考下
    2014-04-04
  • Jquery事件的连接使用示例

    Jquery事件的连接使用示例

    本文以展开图片和收缩图片为例为大家介绍下Jquery事件的连接的使用方法,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-06-06
  • JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法

    JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法

    之前项目中才用了Easy-ui,但是在同时使用tree和grid的效果时,因为页面有俩个URL,分别为Ajax树去后台取数据和Grid取数据,在IE9以上以及其他浏览器里都没有问题,在Ie低版本时会出现先加载表格,然后一闪而过加载树渲染页面,造成页面只有tree数据而没有表格grid数据。
    2014-06-06
  • jQuery Masonry瀑布流插件使用详解

    jQuery Masonry瀑布流插件使用详解

    今天给大家推荐一款不一样的jQuery类似瀑布流插件,使文字也能实现瀑布流效果,有需要的小伙伴可要好好看仔细了。
    2014-11-11
  • jQuery获取Table某列的值(推荐)

    jQuery获取Table某列的值(推荐)

    这篇文章主要介绍了jQuery获取Table某列的值,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03

最新评论