事件处理程序触发两次而不是一次

对不起,我在几分钟内问过两个问题。

在html文件中,我在父DIV标记中有三个子DIV标记:

123
124
125

现在,当我点击三个子DIV标签时,我会看到弹出两个警告框而不是一个:第一个警告框将显示如下内容:frag-123,第二个警告框将显示如下内容:container

我不知道为什么。 我只想获得子DIV的ID值,而不是父DIV的ID值。

  $(function() { $("div").click(function() { var imgID = this.id; alert(imgID); }); });  

请帮忙。

这是事件冒泡的情况。 你可以通过给予来阻止事件冒泡

 e.stopPropagation() 

在click事件处理程序中。

尝试

 $(function() { $("div").click(function(e) { var imgID = this.id; alert(imgID); e.stopPropagation() // will prevent event bubbling }); }); 

如果你想将click事件绑定到容器div中的子元素,那么你可以这样给出

 $("#container div").click(function(){ var imgID = this.id; alert(imgID); }); 

那是因为你将事件处理程序绑定到所有 DIV。 相反,你想要的只是将它绑定到container DIV: