2017-01-29 5 views
1

Ich habe einen Abschnitt auf meiner Seite, wo es ein paar Blöcke gibt. Beim Laden dieser Seite erstelle ich ein Array blocks [], das für jedes ein Blockobjekt speichert, das weitere Informationen zu den Blöcken enthält.jQuery Klick-Trigger auf Element mit JavaScript-Objekt verbunden

function block(info, DOM) { 
    this.id = info["id"]; 
    this.DOM = DOM; 
    this.title = info["title"]; 
    this.icon = info["icon"]; 
    this.author = info["author"]; 
} 

Das DOM-Feld enthält den mit dem Objekt verknüpften Block. Jetzt versuche ich herauszufinden, wie ich mein Blockobjekt am besten erreichen kann, wenn Sie auf den Block klicken.

$(".block").click(..) 

ich derzeit denke, die oben mit^und dann den Index des klickten Elements unter Verwendung das Block-Objekt aus den Blöcken [] Array zu bekommen, aber ich frage mich nach links, wenn es etwas sein würde, Möglichkeit, es direkter mit dem .DOM-Feld in Block zu verknüpfen, wie mit einem bestimmten Klick-Trigger in der Block-Klasse. Gibt es einen saubereren Weg, oder soll ich einfach den Index benutzen? Danke im Voraus!

+0

verwenden können, wenn Sie erstellen möchten (und übergeben) auch ein 'this. $ DOM', welches das jQuery-Element-Objekt sein wird. Dann kannst du 'referee. $ DOM.click()' machen –

Antwort

0

Ja, das ist tatsächlich eine Art zu tun.

Doch statt Event-Handler für jeden Block des Anbringens wie unten

$(".block").click(function(e){ 
    // do event handling 
}); 

gezeigt könnten Sie event delegation versuchen, wie unten

gezeigt Sie Ereignis Delegation

var blocks=[{},{},{}]; 

$("parent_for_blocks").on('click', '.block', function(e){ 
    // do event handling 
    var index = $(this).index(); 
    console.log(blocks[index]); // returns clicked block information 
});