Кажется, ты умираешь преждевременно, так сказать.Разве не имеет смысла удалять привязки событий click, если вы уверены, что запрос Ajax действительно был успешным?
$('.wink-back').live( "click", function( event ) {
var uid = $(this).attr("rel");
$.ajax({
type : "POST",
cache : false,
data : "data[Wink][recipient_id]=" + uid,
url : "/winks/sendWink",
success : function( data ) {
$(this).die( "click" ).addClass("disabled");
var newData = JSON.parse( data );
}
});
});
Учитывая, что ваша проблема заключается в том, что вы хотите предотвратить несколько запросов Ajax посленажата ссылка, jQuery предоставляет несколько глобальных обработчиков событий Ajax, которые могут быть задействованы для любого действия Ajax.
Что касается вашей конкретной проблемы, вы хотите отключить нажатую ссылку при появлении новойЗапущен Ajax-запрос, и, если он успешен, удалите привязку события click для этого элемента.
Вот как вы это сделаете.
Сначала мы настроим два глобальных прослушивателя событийдля любого Ajax-запроса, чтобы мы могли отключить пользовательский интерфейс до завершения действия;один для того, когда начинается запрос Ajax, другой для того, когда он закончен:
$('#my-Element-Containing-All-WinkBack-Class-Elements').ajaxStart(function() {
// Show an overlay over the whole page or
// over your element containing your links with
// opacity 0 so that any elements cannot be clicked.
}).ajaxStop(function() {
// Remove the overlay
});
Итак, что мы делаем здесь, слушаем любой запрос на запуск.Как только мы начинаем, мы предотвращаем любые дальнейшие клики на странице (или другой области страницы - по мере необходимости), добавляя прозрачное наложение с использованием CSS по следующим строкам:
.page-overlay {
z-index: 10000;
filter: alpha(opacity=0); /*older IE*/
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0); /* IE */
-khtml-opacity: 0; /*older Safari*/
opacity: 0; /*supported by current Mozilla, Safari, and Opera*/
position: absolute; top:0; left:0; width:100%; height:100%; color:#FFFFFF; text-align:center; vertical-align:middle;
}
Ваша страница будет повторно активирована один раззапрос завершается удалением этого наложения в методе .ajaxStop ().
Ваша фактическая привязка события щелчка обрабатывается, как я уже предлагал.