【发布时间】:2013-12-03 16:47:10
【问题描述】:
我正在尝试使用 for 循环将事件处理程序添加到一系列 div。应该发生的事情是,当我单击一个# containsThumbs div 时,应该显示其对应的#content div。起初,我遇到了这样一个问题,即在 for 循环中分配事件处理程序意味着无论我单击哪个 # containsThumbs div,都只会出现最后一个 #content div。
我通过调用外部函数而不是在事件处理程序本身中定义一个函数来解决此问题,但现在由于某种原因,每个# containsThumbs div 上的所有事件处理程序都会在页面加载后立即触发。之后,单击 div 将无济于事。
这是我的 HTML:
<div id="containingThumbs">
<div><img src="1.png"></div>
<div><img src="2.png"></div>
<div><img src="3.png"></div>
<div><img src="4.png"></div>
<div><img src="5.png"></div>
<div><img src="6.png"></div>
<div><img src="7.png"></div>
<div><img src="8.png"></div>
<div><img src="9.png"></div>
<div><img src="10.png"></div>
<div><img src="11.png"></div>
<div><img src="3.png"></div>
<div><img src="4.png"></div>
<div><img src="5.png"></div>
<div><img src="6.png"></div>
<div><img src="7.png"></div>
<div><img src="8.png"></div>
</div>
<div id="content">
<div><img src="1.png"></div>
<div><img src="2.png"></div>
<div><img src="3.png"></div>
<div><img src="4.png"></div>
<div><img src="5.png"></div>
<div><img src="6.png"></div>
<div><img src="7.png"></div>
<div><img src="8.png"></div>
<div><img src="9.png"></div>
<div><img src="10.png"></div>
<div><img src="11.png"></div>
<div><img src="3.png"></div>
<div><img src="4.png"></div>
<div><img src="5.png"></div>
<div><img src="6.png"></div>
<div><img src="7.png"></div>
<div><img src="8.png"></div>
</div>
这里是相关的 JS/JQuery 代码:
function expandDiv(j){
//first hide all content that is currently displayed, if any
$("#content div").css("display","none");
//then display only the right content div
$("#content div:nth-child("+j+")").css("display","inherit");
}
function makeInteractive(){
for (var i = 0;i<$("#containingThumbs").children().length;i++){
$("#containingThumbs").on("click","div",expandDiv(i));
}
}
【问题讨论】:
标签: javascript jquery event-handling