我从未使用过addEventListener()
,但由于我生成内容的方式,我无法为每个<div>
我将其视为按钮的 HTML 等效项编写。相当于:
<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);
});
}
}
}
其中i
从 0 到 1j
计数和从 0 到 2 计数(i
在这种情况下都是),i
表示someGallery
,j
表示someIndex
,我可以在上面的代码内部(或使用someId
inside的函数)访问。this.id
self.id
addEventListener
问题是,尽管单击这些“按钮”(<div>
s )之一确实会触发:
JsTree.prototype.toggleImage = function(inGallery, inIndex) {
alert(this.id+", "+inGallery+", "+inIndex);
}
无论单击哪个按钮,它都会始终提示“8、2、3”。“8”是正确的,但我不知道为什么会提醒“2”或“3”。它们似乎比什么多 1i
并且j
计数(通过尝试j < this.jsGalleries[i].buttons.length-1
哪个警报“8、2、2”来验证)。
编辑: someId
,someGallery
和someIndex
不是真正的变量,它们是我为了解释问题而编造的垃圾。