2016-04-04 23 views
-2

ile fonksiyonlara tıklayın. Bu kod DRY değil. Bu işlev bazı değişkenleri ve ajax isteklerini farklılaştırır, ancak bunlar çok benzerdir.JQuery, DRY. Ajax

$(".increase-line-item").click(function(){ 
    var currentLineItem = $(this).parents("tr")[0]; 
    var lineItemQuantity = parseInt($(lineItemQuantityElement).text()); 
    // ... 
    $.ajax({ 
    url: "/line_items/increase_quantity?line_item=" + $(currentLineItem).attr("data-line-item-id"), 
    type: "POST", 
    success: function(result){ 
     $(lineItemQuantityElement).text(lineItemQuantity+1); 
     $(totalPriceElement).text(totalPrice); 
     console.log(result); 
    }) 
}); 

$(".decrease-line-item").click(function(){ 
    var currentLineItem = $(this).parents("tr")[0]; 
    var lineItemQuantity = parseInt($(lineItemQuantityElement).text()); 
    // ... 
    $.ajax({ 
    url: "/line_items/decrease_quantity?line_item=" + $(currentLineItem).attr("data-line-item-id"), 
    type: "POST", 
    success: function(result){ 
     if (lineItemQuantity > 1) { 
     $(lineItemQuantityElement).text(lineItemQuantity-1); 
     } 
     else{ 
     $(currentLineItem).fadeOut(200); 
     $(lineItemsCountElement).text(lineItemsCount - 1); 
     }; 
     $(totalPriceElement).text(totalPrice); 
     console.log(result); 
    } 
    }) 
}); 

Bunu en iyi şekilde yapmak istiyorum. Nasıl yapılır? Bana yardım et. Kodunuzu değişti

+1

bağlama fonksiyonunu (işlevini tıklatın: tıklandığı düğmesine kontrol edin ve düğmeye bağlı olarak eylemi belirlemek ("-artırmak satır maddelik, .decrease hat maddelik."). '[Çoklu Seçici (“ selector1, selector2, selectorN ”)] (https://api.jquery.com/multiple-selector/) – Satpal

+0

@timgeb Basitçe SO üzerinde 'Çok geniş' yapar. Yakın neden: – Mast

+0

Lütfen * yapma * 'sitex'e ait' belgesini bir neden olarak kullanın.Başka bir sitenin varlığı burada konu dışı şeyler yapmaz.O kadar geniş olabilir (hangi noktada başka birine işaret ederek yardımcı olabilirsiniz site), ama lütfen * olağan dışı * konu dışı nedenlerimize uyun. –

cevap

2

Düzenleme beri

tüm ajax şeyler için bir işlev yapın ve her iki düğme tıklama olayına bağlamak.() {$ `Gibi

function doAjaxStuff() { 
    var currentLineItem = $(this).parents("tr")[0]; 
    var lineItemQuantity = parseInt($(lineItemQuantityElement).text(), 10); 
    var action = $(this).hasClass('increase-line-item') ? 'increase_quantity' : 'decrease_quantity'; 

    // ... 

    $.ajax({ 
    url: "/line_items/" + action + "?line_item=[...]" 
    }) 
} 

$(".increase-line-item, .decrease-line-item").on('click', doAjaxStuff); 
+0

ajax istekleri –

+0

için geçerlidir! Çalışıyor! Teşekkürler arkadaşım. Bana çok yardımcı oldun. –