使用jQuery实现WordPress中的Ctrl+Enter和@评论回复


Posted in Javascript onMay 21, 2016

添加 Ctrl+Enter 快捷回复
这里送上两种方法,首先是 jQuery 方法,前段时间一直在研究 jQuery ,因此对 jQuery 方法比较熟悉,如果你的主题本来已经加载 jQuery 库,建议你使用下面的方法。

把这段代码加入 js 文件中,如果你已经加载 jQuery ,现在就可以使用 Ctrl+Enter 进行快捷回复。

jQuery(document).ready(function($){          
//Ctrl+Enter回复
  jQuery(document).keypress(function(e){
    if(e.ctrlKey && e.which == 13 || e.which == 10) {
      jQuery("#commentform").submit();
    }
  })
});

 
解释一下代码,在 chrome 等现代浏览器中, js 是使用 e.which ==13 判断 Enter ,在 ie6 中, js 是使用 e.which ==10 判断 Enter 。

另一种方法:
在 comments.php 中找到一段类似以下代码(即评论框的代码),

<textarea name="comment" id="comment" rows="10" cols="50" tabindex="4"></textarea>

 
替换为以下的一段代码:

<textarea name="comment" id="comment" rows="10"?cols="50"?tabindex="4" onkeydown="if(event.ctrlKey&&event.keyCode==13 || Key&&event.keyCode==10){document.getElementById('submit').click();return false};"></textarea>

 

实现 Ctrl+Enter 快捷回复的原理跟 jQuery 版的差不多,这里就不作详细解释了。

实现  @回复 
在回复时带有“ @ ”的功能大家应该不陌生了,在微博, BBS 中都可以见到“ @ ”的身影,连腾讯的 Qzone 也加入了“ @回复 ”的功能。的确,“ @回复 ”使到回复的对象更加清晰了,对于多重回复效果更加明显。

但是, WordPress 的评论模板中并没有自带这个功能,因此我们需要手动添加进去,其实这个功能在 WordPress 中已经比较流行了,不少主题中都带有这个功能,实现的原理也有多种,而我在本文中介绍的是 jQuery 实现的方法,由于网上流传的文章大多都是直接给出 jQuery 代码,没有详细的解释,而不同的网站 DOM 不一定相同,因此不熟悉 jQuery 的童鞋在使用 jQuery 实现“ @回复 ”时可能会出现各种问题。

1.加载 jQuery 库,可以直接用 google 的。

2. jQuery 代码,可以直接放到 js 文件中。

jQuery(document).ready(function($){
$('.comment-reply-link').click(function() {
   //获取回复者的id
   var atid = '"#' + $(this).parent().parent().attr("id") + '"';
   //获取回复者的昵称
  var atname = $(this).parent().find('.comment_author').text();
$("#comment").attr("value","<a href=" + atid + ">@" + atname + " </a>").focus();
});
$('#cancel-comment-reply a').click(function() {
$("#comment").attr("value",'');
});
});

3.解释 jQuery 代码

在实现“ @回复 ”中,关键是获取所要回复的对象的 id 和昵称,因此定义了两个量 atid , atname ,分别用于保存所要回复的对象的 id 和昵称。当用户用鼠标单击 .comment-reply-link 后jQuery会获取其上两级父元素的 id 属性,保存在量 atid 中,然后在其父元素的子辈元素中寻找 .comment_author ,并获取其内容保存在 atname 中。或许上面的描述较难理解,下面再用图片说明一下!

要获取用户 id ,首先需要了解评论部分的 DOM 结构,以 Melody 为例,用 Firebug 查看其一条评论的部分 HTML ,

使用jQuery实现WordPress中的Ctrl+Enter和@评论回复

看了图相信童鞋们应该大概明白了, .comment-reply-link 的上两级父元素包含回复者的 id ,因此可以在这里获取回复者的id,而在 .comment-reply-link 的同辈元素中包含了用户的昵称,看到这里相信各位童鞋再看看上面的 jQuery 代码应该不难理解了!

我们首先应该知道自己的评论模板在哪里有输出回复者的 id ,在哪里有输出回复者的昵称,然后用 jQuery 的选择器即可以获取相关的数据。

Javascript 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
Javascript笔记一 js以及json基础使用说明
May 22 Javascript
Android中的jQuery:AQuery简介
May 06 Javascript
浅谈Javascript中Object与Function对象
Sep 26 Javascript
关于网页中的无缝滚动的js代码
Jun 09 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
vue+axios实现登录拦截的实例代码
May 22 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
vue增删改查的简单操作
Jul 15 Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
May 21 #Javascript
IScroll5 中文API参数说明和调用方法
May 21 #Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 #Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 #Javascript
jQuery插件pagination实现无刷新分页
May 21 #Javascript
JavaScript中对JSON对象的基本操作示例
May 21 #Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
May 21 #Javascript
You might like
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
php 函数中使用static的说明
2012/06/01 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
json格式的时间显示为正常年月日的方法
2013/09/08 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
Node使用Selenium进行前端自动化操作的代码实现
2019/10/10 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python获取本机外网ip的方法
2015/04/15 Python
python链接Oracle数据库的方法
2015/06/28 Python
python模拟Django框架实例
2016/05/17 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
会计自荐信范文
2014/03/09 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
个人安全生产责任书
2014/07/28 职场文书
办理房产过户的委托书
2014/09/14 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
停车场管理协议书范本
2014/10/08 职场文书
python实现简单反弹球游戏
2021/04/12 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang
nginx静态资源的服务器配置方法
2022/07/07 Servers