在下面的代碼中:我發送兩個相同的ajax請求,唯一的區別是一行,如何將它包裝到一個函數中以保持我的代碼乾淨?如何讓我的代碼在ajax請求中保持乾燥?
$('.searchable').multiSelect({
selectableHeader: "<input type='text' class='search-input' autocomplete='off' placeholder='Select reservations ex. \"12\"'>",
selectionHeader: "<input type='text' class='search-input' autocomplete='off' placeholder='Remove selected reservations \"'>",
afterInit: function(ms){
var that = this,
$selectableSearch = that.$selectableUl.prev(),
$selectionSearch = that.$selectionUl.prev(),
selectableSearchString = '#'+that.$container.attr('id')+' .ms-elem-selectable:not(.ms-selected)',
selectionSearchString = '#'+that.$container.attr('id')+' .ms-elem-selection.ms-selected';
that.qs1 = $selectableSearch.quicksearch(selectableSearchString)
.on('keydown', function(e){
if (e.which === 40){
that.$selectableUl.focus();
return false;
}
});
that.qs2 = $selectionSearch.quicksearch(selectionSearchString)
.on('keydown', function(e){
if (e.which == 40){
that.$selectionUl.focus();
return false;
}
});
},
afterSelect: function(value){
$.ajax({
type: 'GET',
url: '/police/get_res_price?price=' + value,
success: function (data) {
var initial_price = parseInt($('.give-me-money').val());
var obj = JSON.parse(data);
$.each(obj, function(booking_price, value) {
initial_price += parseInt(value.BOOKING_PRICE);
});
$('.give-me-money').val(initial_price); //set total
}
});
this.qs1.cache();
this.qs2.cache();
},
afterDeselect: function(value){
$.ajax({
type: 'GET',
url: '/police/get_res_price?price=' + value,
success: function (data) {
var initial_price = parseInt($('.give-me-money').val());
var obj = JSON.parse(data);
$.each(obj, function (booking_price, value) {
initial_price -= parseInt(value.BOOKING_PRICE);
});
$('.give-me-money').val(initial_price); //set total
}
});
this.qs1.cache();
this.qs2.cache();
}
});
怎麼樣?去做就對了。 'function foo(){ajax stuff here} ... afterDelesect:foo,afterSelect:foo' –
它們之間有什麼區別?我不能把他們分開。 – Oleander
我不確定我是否明白問題所在;似乎你已經知道答案(「將它們包裝在一個函數中」)。實際上你應該抽象出兩個函數:前/後函數和成功函數。只有成功的功能不同;你可以編寫一個函數發生器,它需要一個arg來指示加/減,或者讓成功函數調用一個小的幫助函數來完成實際的數學運算等。 –