Zur Laufzeit habe ich Javascript erstellen HTML und ich möchte ein Objekt auf ihnen binden, um für später auf eine Funktion übergeben.Übergabe eines Objekts zur Laufzeit an eine JavaScript-Funktion
Etwas wie folgt aus:
var projects = //(json object)
projects.forEach(function(p) {
$("#container").append("<div onclick=handleClick(p)></div>");
});
function handleClick(p) {
//...
}
Es scheint dies zu tun macht [object object]
die Zeichenfolge p
werden anstelle des tatsächlichen Projektobjekt und mit JQuery integrierten in $ .click Funktion ist die gleiche Sache. Ich weiß, dass ich diese Elemente irgendwie zur Laufzeit an eine Funktion binden muss.
Was ist der richtige Weg, um so etwas ohne übermäßige Suche und DOM-Zugriff zu tun?
können Sie jQuery '.data()' Methode verwenden, um das Objekt gegen das betreffende Element zu speichern. Verwenden Sie dann im Click-Handler '$ (this) .data()', um es abzurufen. Lesen Sie [the '.data()' doco] (http://api.jquery.com/data/) und probieren Sie es aus; komm zurück, wenn du immer noch Probleme hast. – nnnnnn
Behandeln Sie den Klick auf das übergeordnete Element und entscheiden Sie, welches div-Element angeklickt wurde. Wenn Sie eine ID haben, um zu identifizieren, auf welches Projekt geklickt wurde, können Sie das als Datenattribut verwenden, damit Sie –