を使用したことはありませんが、コンテンツを生成する方法が原因で、ボタンとして扱っているaddEventListener()それぞれに必要な HTML に相当するものを書くことができません。<div>同等のものは次のようになります。
<div onmousedown="jsItems[someId].toggleImage(someGallery, someIndex);"></div>
私が試してきたのはこれです:
JsTree.prototype.addGalleries = function(inElements) {
// ...unrelated code here removed for StackOverflow...
for (var i = 0; i < this.jsGalleries.length; i++) {
for (var j = 0; j < this.jsGalleries[i].buttons.length; j++) {
var self = this;
this.jsGalleries[i].buttons[j].addEventListener("mousedown", function() {
self.toggleImage(i, j);
});
}
}
}
whereiは 0 から 1 までカウントし、0 から 2 までカウントします(この場合はjどちらも) 、iisomeGalleryjsomeIndexsomeIdthis.idself.idaddEventListener
問題は、これらの「ボタン」( <div>s) のいずれかをクリックするとトリガーされることですが、
JsTree.prototype.toggleImage = function(inGallery, inIndex) {
alert(this.id+", "+inGallery+", "+inIndex);
}
どのボタンがクリックされても、常に「8、2、3」と警告します。「8」は正しいですが、「2」または「3」が警告される理由がわかりません。それらは、何よりも1だけ多くi、jカウントされるようです(j < this.jsGalleries[i].buttons.length-1どのアラート「8、2、2」を試すことで確認されます)。
編集: someId、someGallery、およびsomeIndexは実際の変数ではなく、問題を説明するために作成したがらくたです。