function(e) {
// отменяем привычное действие ссылки
e.preventDefault();
// добавляем класс loading
$(this).addClass("loading");
// переменной confirm_text присваиваем атрибут ссылки "Выход" с именем data-confirm или false
var confirm_text = $(this).data("confirm") || false;
// переменной method присваиваем атрибут ссылки "Выход" с именем data-method или get
var method = $(this).data("method") || "get";
// берем адрес ссылки для выхода
var url = $(this).attr("href");
// создаем пустой объект, будем использовать его для отправки данных на сервер
var post_data = {};
// если метод отправки = post, пробегаемся по всем атрибутам "data-post" ссылки "Выход" и заносим их значения с маленькой буквы в наш объект
if (method == "post") {
for (var i in $(this).data()) {
if (i.indexOf("post") === 0) {
post_data[i.replace(/^post/, "").toLowerCase()] = $(this).data(i)
}
}
}
var send = true;
// если у нас задан атрибут confirm_text (по всей видимости это alert-сообщение типа "Вы уверены что хотите выйти?"), то проверяем нажал ли пользователь "Да"
if (confirm_text) {
if (confirm(confirm_text)) {
send = true
} else {
send = false
}
}
// Если пользователь нажал "Да" или атрибут confirm_text не задан, то отправляем данные на сервер
if (send) {
$.ajax({
url: url,
cache: false,
dataType: "script",
type: method,
data: post_data
})
}
}
... а также почему если я перейду по ссылке toster.ru/auth/sign_out будет совсем не то, что я ожидаю (выход из аккаунта).
Значит на сервере выход из аккаунта не поддерживает метод GET. Иначе, пользователи могли бы вставить в посты изображение со ссылкой
<img src="http://toster/sign-out">
и после захода на эту страницу все пользователи автоматом разлогинивались.