2016-04-04 7 views
-2

Dieser Code ist nicht DRY. Diese Funktionen unterscheiden einige Variablen und Ajax-Anforderungen, aber sie sind sehr ähnlich.JQuery, trocken. Klicken Sie auf Funktionen mit 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); 
    } 
    }) 
}); 

Ich möchte es am besten machen. Wie es geht? Hilf mir.

+1

bind Funktion wie '$ klicken (function() {. 'ie [Multiple Selector (" selector1, selector2, selectorN ")] (https://api.jquery.com/multiple-selector/) – Satpal

+0

@timgeb Das macht es einfach" Zu breit "auf SO. Keine Notwendigkeit für eine benutzerdefinierte Schließen Grund – Mast

+0

Bitte * nicht * verwenden "gehört zu SiteX" als ein naher Grund. Die Existenz einer anderen Website macht hier nicht das Thema, es kann zu breit sein (an welcher Stelle können Sie hilfreich sein, indem Sie auf eine andere verweisen Website), aber bitte halten Sie sich an unsere * üblichen * Off-Topic Gründe. –

Antwort

2

bearbeiten, da Sie Ihren Code geändert

Machen Sie eine Funktion für alle Ihre Ajax-Sachen und binden Sie es an dem Click-Ereignis der beiden Tasten. Überprüfen Sie, welche Schaltfläche geklickt wurde und in Abhängigkeit von der Taste, bestimmen die Aktion: ("vergrößern-line-Artikel, .decrease-line-item")

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-Anfragen unterscheiden sich für die Funktionen –

+0

Yess !! Es ist Arbeit! Danke Freund. Sie haben mir sehr geholfen. –

Verwandte Themen