使用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 相关文章推荐
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
小结Node.js中非阻塞IO和事件循环
Sep 18 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
jQuery找出网页上最高元素的方法
Mar 20 Javascript
浅谈jquery的map()和each()方法
Jun 12 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
vuex的module模块用法示例
Nov 12 Javascript
使用canvas实现一个vue弹幕组件功能
Nov 30 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
Feb 22 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 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 win下Socket方式发邮件类
2009/08/21 PHP
php自动加载的两种实现方法
2010/06/21 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
js实现一键复制功能
2017/03/16 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python实现各进制转换的总结大全
2017/06/18 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
六年级数学教学反思
2014/02/03 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
销售人员求职信
2014/07/22 职场文书
药店营业员岗位职责
2015/04/14 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
vue router 动态路由清除方式
2022/05/25 Vue.js