Ответ 1
Если "# page-refresh" - это действительно кнопка (элемент button
или input type="button"
), вы можете использовать ее disabled
, а затем установите время ожидания для его восстановления:
$('#page-refresh').click( function() {
var refreshButton = this;
$.ajax({
url: "/page1.php",
cache: false,
dataType: "html",
success: function(data) {
$('#pagelist').html(data);
refreshButton.disabled = true;
setTimeout(function() {
refreshButton.disabled = false;
}, 5000);
}
});
return false;
});
Если это не кнопка, вы можете имитировать свойство disabled
. Я сделаю это с помощью класса, чтобы вы могли показать отключенное состояние для пользователя через CSS:
$('#page-refresh').click( function() {
var $refreshButton = $(this);
if (!$refreshButton.hasClass('disabled')) {
$.ajax({
url: "/page1.php",
cache: false,
dataType: "html",
success: function(data) {
$('#pagelist').html(data);
$refreshButton.addClass('disabled');
setTimeout(function() {
$refreshButton.removeClass('disabled');
}, 5000);
}
});
return false;
});
Обратите внимание, что в первом случае я сохраняю ссылку на элемент DOM (var refreshButton = this;
), но во втором случае я сохраняю ссылку на обертку jQuery вокруг нее (var $refreshButton = $(this);
). Это просто потому, что jQuery упрощает тестирование/добавление/удаление имен классов. В обоих случаях эта ссылка высвобождается после освобождения замыканий в вашем обработчике событий (в приведенном выше примере, что через пять секунд после завершения вызова ajax).
Вы сказали, что хотите отключить его после завершения ajax-вызова, но, как указывает Маркус ниже, вы, вероятно, захотите отключить его при запуске вызова ajax. Просто переместите бит отключения бит и добавьте обработчик error
для случая, когда success
не получает вызов (error
обработчики обычно являются хорошей идеей в любом случае):
Реальная кнопка:
$('#page-refresh').click( function() {
var refreshButton = this;
refreshButton.disabled = true; // <== Moved
$.ajax({
url: "/page1.php",
cache: false,
dataType: "html",
success: function(data) {
$('#pagelist').html(data);
setTimeout(function() {
refreshButton.disabled = false;
}, 5000);
},
error: function() { // <== Added
refreshButton.disabled = false;
}
});
return false;
});
Имитируется с помощью класса 'disabled':
$('#page-refresh').click( function() {
var $refreshButton = $(this);
if (!$refreshButton.hasClass('disabled')) {
$refreshButton.addClass('disabled'); // <== Moved
$.ajax({
url: "/page1.php",
cache: false,
dataType: "html",
success: function(data) {
$('#pagelist').html(data);
setTimeout(function() {
$refreshButton.removeClass('disabled');
}, 5000);
},
error: function() { // <== Added
$refreshButton.removeClass('disabled');
}
});
return false;
});