我运行此jQuery代码的WordPress博客允许用户点击将帖子保存为书签的书签链接。每个帖子都显示一个总书签计数器,如下所示:" Bookmarked(5)"。虽然此代码有效,但只要有人在书签链接上多次单击,就会记录多次单击,然后将相同的帖子保存为多个书签。当用户再次单击书签链接尝试删除书签时,它会再次注册多次点击,计数器开始显示负数,如下所示:"已加书签(-5)"。
我一直在寻找有关如何防止这种情况发生的指示,以便书签计数器永远不会减去,并且用户不能多次为同一个帖子添加书签但到目前为止没有成功。< / p>
以下是我使用的jQuery代码:
jQuery(document).ready( function($) {
var added_message = upb_vars.added_message;
var delete_message = upb_vars.delete_message
$(document).on('click', '.upb_add_bookmark', function () {
var post_id = $(this).attr('rel');
var data = {
action: 'bookmark_post',
post_read: post_id
};
$.post(upb_vars.ajaxurl, data, function(response) {
$('.upb_bookmark_control_'+post_id).toggle();
if($('.upb-bookmarks-list').length > 0 ) {
var bookmark_data = {
action: 'insert_bookmark',
post_id: post_id
};
$.post(upb_vars.ajaxurl, bookmark_data, function(bookmark) {
$(bookmark).appendTo('.upb-bookmarks-list');
$('.no-bookmarks').fadeOut();
});
}
});
return false;
});
$(document).on('click', '.upb_del_bookmark', function () {
var post_id = $(this).attr('rel');
var data = {
action: 'del_bookmark',
del_post_id: post_id
};
$.post(upb_vars.ajaxurl, data, function(response) {
$('.bookmark-'+post_id).fadeOut();
$('.upb_bookmark_control_'+post_id).toggle();
});
return false;
});
});
你能帮我解决这个问题吗?
非常感谢!
答案 0 :(得分:5)
一种方法是在.disabled
之前在您的链接中添加$.post()
课程。
// Before ajax...
if ($(this).hasClass('disabled')) {
return false;
} else {
$(this).addClass('disabled');
}
// Make sure we refer to the same element
var that = this;
// On post success...
$(that).removeClass('disabled');