使用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 相关文章推荐
js资料toString 方法
Mar 13 Javascript
javascript面向对象程序设计(一)
Jan 29 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
jquery append与appendTo方法比较
May 24 jQuery
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
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
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
MySQL数据源表结构图示
2008/06/05 PHP
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP中开启gzip压缩的2种方法
2015/01/31 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
python删除文本中行数标签的方法
2018/05/31 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
Python 发送邮件方法总结
2020/08/10 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
益模软件Java笔试题
2012/03/27 面试题
如何写一份好的自荐信
2014/01/02 职场文书
超市总经理岗位职责
2014/02/02 职场文书
《七颗钻石》教学反思
2014/02/28 职场文书
信息技术培训感言
2014/03/06 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
遗产继承公证书
2014/04/09 职场文书
高一学生期末评语
2014/04/25 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
推荐信模板
2014/05/09 职场文书
公司投资建议书
2014/05/16 职场文书
如何解决.cuda()加载用时很长的问题
2021/05/24 Python
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript