使用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 相关文章推荐
扩展String功能方法
Sep 22 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 Javascript
最近项目写了一些js,水平有待提高
Jan 31 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
Mar 03 Javascript
jQuery中Dom的基本操作小结
Jan 23 Javascript
JavaScript实现的SHA-1加密算法完整实例
Feb 02 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 Javascript
JavaScript实现经纬度转换成地址功能
Mar 28 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
vue如何实现动态加载脚本
Feb 05 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生成图片的缩略图的方法
2015/08/18 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python的urllib模块显示下载进度示例
2014/01/17 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python3.4爬虫demo
2019/01/22 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
python FTP批量下载/删除/上传实例
2019/12/22 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
2020/03/08 Python
Django中的DateTimeField和DateField实现
2021/02/24 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
上海雨人软件技术开发有限公司测试题
2015/07/14 面试题
升职自荐信范文
2013/10/05 职场文书
公司应聘自荐书
2014/06/14 职场文书
公证委托书标准格式
2014/09/11 职场文书
保外就医申请书范文
2015/08/06 职场文书
python 实现的截屏工具
2021/05/08 Python
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers