2017-01-13 3 views
0

Hier ist der entschlüsselte Code-Schnipsel, mit dem ich Schwierigkeiten habe, meine Frage zu erklären.Entfernen Sie Datenattribut auf Klick-Funktion mit jQuery

Knopf, die Funktion löst:

<button id="deleteItem" type="button">Delete</button> 

Eingabefeld Attribut Ich versuche

<input id="quantity" type="text" name="field" min="1" value="1" data-price="10"> 

jQuery zu aktualisieren

$(function() { 
    // Bind an action to the deleteItem - click event 
    $("#deleteItem").on('click', function() { 

     var deleteQuantity = document.getElementById("quantity"); 

     // Add 0 value to the data-price value 
     deleteQuantity.data('price','0'); 

    }); 
}); 
zu verarbeiten

Wenn Click-Ereignis ausgelöst wird bekomme ich dies von der Konsole.

Uncaught Typeerror: deleteQuantity.data ist keine Funktion

+0

'var deleteQuantity = $ ("#quantity"); ' – Azim

+0

oder einfach $ ('# menge') .... – sinisake

+1

Sie versuchen uns ea jQuery-Methode ('.data()') auf einem Plain-Vanilla-JavaScript-Objekt 'deleteQuantity' – j08691

Antwort

2

Sie geben wie diese $('input#quantity') auswählen und verändern data-price mit attr()

$('#deleteItem').click(function() { 
 
    $('#quantity').attr('data-price', 0) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="deleteItem" type="button">Delete</button> 
 
<input id="quantity" type="text" name="field" min="1" value="1" data-price="10">

+2

Es ist besser, einen ID-Selektor nicht zu qualifizieren; es verlangsamt den Auswahlprozess tatsächlich. Ein Selektor mit '# quantity' verwendet' document.getElementById ('quantity') ', wodurch das Element sofort abgerufen wird. Ein Selektor mit 'input # quantity' muss entweder das Element holen, dann prüfen, ob es ein' Eingang' ist, oder alle 'Eingänge' finden, dann die IDs auf jedem einzelnen prüfen ... –

+0

Ja, du hast recht, auch' ID's müssen eindeutig sein, also gibt es keinen Sinn. –

+0

Nun @NenadVracar Ich habe das schon vorher versucht, aber ich habe es nicht verstanden. Jetzt habe ich es mit Ihrer Antwort reproduziert und immer noch nicht aktualisiert. Es muss etwas anderes vor sich gehen, da Knöpfe und Eingänge durch eine Schleife ausgegeben werden, die durch eine Indexnummer wie diese "deleteItem-0" und "quantity-0" zugewiesen ist. Ich habe es viele Male überprüft und jede Schaltfläche zum Löschen aktualisiert das Eingabefeldattribut. Da es andere Eingabefelder mit 'id'-Selektor wie 'price-0' und' deleteItem-0' gibt, funktioniert der Job gut. –

Verwandte Themen