Я создал повторно используемый шаблон ajax в jQuery. Это работает хорошо, но начинает становиться грязным, когда я добавляю к нему больше действий.
Посмотрите на success
обратный вызов. Каждый раз, когда я добавляю новое действие, условная логика усложняется: if actionType == foo, then bar
и т.д ...
$('.action-panel').delegate('a', 'click', function () {
var link = $(this),
actionTypeId = link.data('action-type-id'),
// Do stuff, like getting the url from the link, etc...
// Throttle multiple clicks
$.ajax({ //[snip]
beforeSend: function () {
link.toggleClass('on');
},
error: function () {
link.toggleClass('on');
},
success: function (response) {
if (response.success) {
if (actionTypeId === 4) {
// do stuff for action 4
}
else if (actionTypeId === 2) {
// do stuff related to action 2
}
else if (actionTypeId === 3) {
// do stuff related to action 3
}
// More action types, etc...
}
else {
link.toggleClass('on');
}
// decide to show tooltip or not
});
// do some extra stuff like re-enable the link (throtled earlier)
Я должен выделить функцию ajax сам по себе. Но я не могу найти способ разделить условные выражения обратного вызова на их собственные блоки / функции и передать результат обратно.
Есть идеи? Пожалуйста, помните, что я новичок в JavaScript и jQuery.