使用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 相关文章推荐
JavaScript游戏之是男人就下100层代码打包
Nov 08 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
js获取下拉列表框中的value和text的值示例代码
Jan 11 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
JavaScript实现简单的拖动效果
Jul 02 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
微信小程序常用的3种提示弹窗实现详解
Sep 19 Javascript
对vue中的事件穿透与禁止穿透实例详解
Oct 28 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
基于JS实现计算24点算法代码实例解析
Jul 23 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
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php微信开发之关注事件
2018/06/14 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
js 目录列举函数
2008/11/06 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
用RadioButten或CheckBox实现div的显示与隐藏
2013/09/21 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
2016/10/28 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
如何利用JavaScript编写更好的条件语句详解
2020/08/10 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python基本语法经典教程
2016/03/11 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Python如何实现转换URL详解
2019/07/02 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
几个MySql的面试题
2013/04/22 面试题
4s店市场专员岗位职责
2014/04/09 职场文书
治安消防安全责任书
2014/07/23 职场文书
ktv好的活动方案
2014/08/17 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
我收到了德劲DE1107
2022/04/05 无线电
Win11软件图标固定到任务栏
2022/04/19 数码科技
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python