2017-01-29 11 views
1

私のページにはいくつかのブロックがあるセクションがあります。このページを読み込むときには、それぞれのブロックオブジェクトを格納する配列ブロック[]を作成します。これらのブロックオブジェクトには、ブロックに関するさらに詳しい情報が含まれています。javascriptオブジェクトに関連付けられた要素のjQueryクリックトリガー

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

DOMフィールドにはオブジェクト関連ブロックが保持されます。さて、ブロックをクリックするとブロックオブジェクトを保持する最善の方法を見つけようとしています。

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

私は現在、ブロック[]配列のうち、ブロックオブジェクトを取得するには、クリックされた要素のインデックスを使用して、その後^以上を使用し、と思っていますが、いくつかあるだろうかと思いままですブロッククラスで特定のクリックトリガを持つように、ブロックの.DOMフィールドと直接リンクする方法です。それを行うためのよりクリーンな方法がありますか、私はちょうどインデックスを使用する必要がありますか?前もって感謝します!

+0

を使用することができますevent delegationを試みることができますjQuery要素オブジェクトとなる 'this。$ DOM'も(渡して)渡します。あなたは '審判。$ DOM.click()'をすることができます。 –

答えて

0

はい、それは本当にやり方です。

以下のように

しかし、代わりに

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

下に示すように、各ブロックのイベントハンドラを取り付けるあなたが作成したい場合は、イベントの委任

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 
}); 
関連する問題