Evitar múltiples envíos ajax en clics múltiples

Tengo un blog de WordPress que ejecuta este código jQuery que permite a los usuarios hacer clic en un enlace de marcador que guarda la publicación como un marcador. Cada publicación muestra un contador total de marcadores que se ve así: "marcado como favorito (5)". Aunque este código funciona, registra múltiples clics cada vez que alguien hace clic varias veces en el enlace de marcador y luego guarda la misma publicación que varios marcadores. Cuando el usuario intenta eliminar el marcador haciendo clic en el enlace de marcador nuevamente, registra múltiples clics de nuevo y el contador comienza a mostrar numbers negativos que se asemejan a: "Marcado como favorito (-5)".

He estado buscando instrucciones sobre cómo evitar que esto suceda, de modo que el contador de marcadores nunca se ejecute less y el usuario no pueda marcar la misma publicación varias veces, pero hasta ahora no ha tenido éxito.

Aquí está el código jQuery que estoy usando:

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; }); }); 

¿Podría ayudarme a resolver este problema?

¡Muchas gracias!

Una forma es agregar una class .disabled a su enlace antes de $.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');