О $.ajax.context

Вроде удобно сделали, теперь можно задать контекст для метода success, теперь вместо


$.ajax({
	url: "...",
	success: function(){
		$("#myTemplate").tmpl(data).appendTo($("#myContainer").empty());
	}
});

можно удобно писать


$.ajax({
	url: "...",
	context: $("#myContainer").empty(),
	success: function(){
		$("#myTemplate").tmpl(data).appendTo(this);
	}
});

только это все разбивается о рифы реальности, когда аджакс надо повесить на кнопку


$("#myButton").click(function(){
	$.ajax({
		url: "...",
		context: $("#myContainer").empty(),
		success: function(){
			$("#myTemplate").tmpl(data).appendTo(this);
		}
	});
});

При трех быстрых кликах, контейнер три раза обнуляется, потом идет запрос/ответ и шаблон три раза вставляется в контейнер.

  1. 26 Январь 2012 в 12:36 | #1
    При первом клике убирай эвент, чтобы нельзя было кликнуть еще раз. В чем траблы то?
  2. 26 Январь 2012 в 12:41 | #2
    ну, нет, если уже по хорошему надо делать ajax.abort() и никаких проблем
  3. 26 Январь 2012 в 12:52 | #3
    так ты себя слегка поддосишь, а в моем случае просто раз обработаешь
  4. 26 Январь 2012 в 12:59 | #4
    как по мне то убирать обработчик и вешать его снова это бред, проще ставить локер.
  5. Костег
    26 Январь 2012 в 20:20 | #5
    локер это ок. Просто сам факт, что если уже идет один запрос, то из этой же области слать такой же самый вдогонку как-то неправильно что ли. Нужно дождаться ответа, пусть даже там по тайм-ауту отвалилось)
  6. 26 Январь 2012 в 20:24 | #6
    правильно если запрос идет с другими параметрами. ну да не суть. я за локер или за abort но не за качели с событиями)
  1. Пока что нет уведомлений.