2017-03-07 4 views
1

Ich habe eine Funktion, die beim Klicken auf eine Eingabe im DOM ausgeführt wird. Ich möchte verhindern, dass das Element überprüft wird, bis es von meiner Funktion genehmigt werden kann. Ich versuche dies mit e.preventDefault(); oder event.preventDefault(); (gibt es einen Unterschied ?!), aber ich bin nicht erfolgreich, was mache ich falsch?preventDefault in Funktion mit mehr Parametern?

Dies ist mein Code ohne den preventDefault-Teil.

$(document).on("click","[data-item]", function() { 
    cart.updateCart(this); 
}); 

cart.updateCart = function(target) { 
    // do stuff and perhaps check the input element 
} 

Ich habe versucht, diese, die nicht funktioniert:

$(document).on("click","[data-item]", function() { 
    cart.updateCart(this, event); 
}); 

cart.updateCart = function(target, event) { 
    event.preventDefault(); 
    console.log(event); // returns MouseEvent -- is this even the correct "event" ? 
    // do stuff and perhaps check the input element 
} 

Ich glaube, ich bin nicht "immer", wie das funktioniert. Vielleicht kann jemand erklären, wie das funktioniert und was ich falsch mache?

Antwort

0

event sollte der erste Parameter in Ihrem Click-Handler übergeben werden. So Ihr Code sollte wirklich wie sein diese .:

$(document).on("click","[data-item]", function(event) { 
    cart.updateCart(this, event); 
}); 

cart.updateCart = function(target, event) { 
    event.preventDefault(); 
    console.log(event); // returns MouseEvent -- is this even the correct "event" ? 
    // do stuff and perhaps check the input element 
} 

Sie können mehr lesen über die Verhütung Standardaktionen here.

+0

Ahh ... die Click-Funktion muss das Event-Objekt liefern. Vielen Dank! –