使用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文件缓存的代码
Apr 09 Javascript
小试JQuery的AutoComplete插件
May 04 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
javascript获取flash版本号的方法
Nov 20 Javascript
ExpressJS入门实例
Jan 14 Javascript
探索angularjs+requirejs全面实现按需加载的套路
Feb 26 Javascript
AngularJS 指令的交互详解及实例代码
Sep 14 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
Sep 07 Javascript
原生JS实现天气预报
Jun 16 Javascript
vue组件开发之slider组件使用详解
Aug 21 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
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python读取Excel的方法实例分析
2015/07/11 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
Django url 路由匹配过程详解
2021/01/22 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
孝老爱亲模范事迹
2014/01/24 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
感恩教育主题班会
2015/08/12 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL
Promise静态四兄弟实现示例详解
2022/07/07 Javascript