不知是否有童鞋发现,当我折腾出一个东西后多半会出现续文,从根本来说是怀着一颗永不满足的折腾心呀!

进入正题,评论部分的双击事件已经加了“双击回复再双击取消”,这此再来个强大的:新评论提交后(在刷新页面前)可以双击再编辑。

声明,此功能基于Willin大师的《WordPress Ajax comments》其中的“再编辑”功能,此文仅讨论以双击新评论事件替代原需点击“编辑”的事件。所以,没折腾上这个AJAX评论提交赶紧去吧~

146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
 
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
 
<div id="comment-<?php comment_ID(); ?>">
 
	<div class="comment-author vcard"><?php echo get_avatar( $comment,$size='40',$default='<path_to_url>' ); ?><?php printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link() ); ?></div>
 
		<?php if ( $comment->comment_approved == '0' ) : ?>
 
		<em><?php _e( 'Your comment is awaiting moderation.' ); ?></em>
 
		<br />
 
		<?php endif; ?>
 
	<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"><?php printf( __( '%1$s at %2$s' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), ' ' ); ?></div>
 
	<div class="comment-body"><?php comment_text(); ?></div>
 
</div>

需要对上段comments-ajax.php内的最后回复评论部分微调一下两行:

1
2
3
4
 
<div id="comment-<?php comment_ID(); ?>" class="comment-body live"> //添加class="comment-body live"符合WP原函数的class并添加一个class="live"以便jQuery控制
 
<?php comment_text(); ?> //去除<div class="comment-body"></div>

来看看现在新评论提交后的HTML代码段:

dbcmh.jpg

因为我把提交成功的图标提示和再编辑那几个字都删了,所以提交成功没有任何提示。因为我有简洁癖,如果新功能影响整体风格宁愿放弃,等想到好的样式再加入。来看jQuery核心代码:

 
$('.live').live('dblclick',function(){ //对class='live'对象绑定动态的双击事件
 
	$(this).next().children('a').click(); //模拟用户点击“再编辑”
 
});

live()貌似是jQuery1.3还是1.4后新加的函数,而且貌似IE不支持此函数,暂时无视……

内容就是这些,有些童鞋可能又会提问,怎样让访客知道能双击再编辑呢?

我想说:双击快速回复再双击回复,和现在的新评论双击再编辑,我都自己用,知道的童鞋偷偷用就好,也当作小站的一个隐藏功能呗~