我有嵌套 div 的情况。我有一个父 div(有一个 onclick() 事件)和一些动态填充的 div。我了解到,通过“冒泡”,onclick() 事件应该通过 DOM 向上传播,从而在所有父项中触发 onclick() 事件。我所做的所有研究都表明,有很多人正在努力防止这种情况发生,而我却无法让它发挥作用。我可以让 onclick() 工作的唯一方法是在 div 的边缘附近单击,大概是子 div 不存在的地方,我直接单击父级。
我在下面包含了适用的代码。页面上可以有多达 9 个,即所谓的“小部件”,但我已经删除了所有代码,除了引用第一个“小部件”。
更新:当我尝试从 JavaScript 函数中提取所有内容并将其直接放入 HTML 代码中时,它可以正常工作。但是,这样做会迫使我放弃所需的功能,因此我将尝试避免这种解决方法。
下面有一个新的小提琴,它基本上显示了我的目标,即使事件没有像我期望的那样调用 JS 函数。
更新#2:我创建了一个模仿我在代码中看到的响应的小提琴(下面的#5)。使用 fiddle 时,您会注意到在 div 的中心单击时没有发出警报,但是当您在 div 的外边界附近单击时,您最终会得到响应。
问题解决了:
根据 Racheet 在下面的回答,这个问题已经解决。我用功能齐全的代码创建了一个最终的小提琴以供参考:http: //jsfiddle.net/v3MGX/8/
JAVASCRIPT:
function initializeWidgets(){
var widget1 = "Professional";
widget1 =
"<div class='outer'><div class='middle'>
<div class='inner'><h1>" + widget1 + "</h1></div></div></div>";
document.getElementById("widget1").innerHTML = widget1;
}
function hoverWidgets(widgetID){
var w = new Array();
w[0] = "Work Experience, Educational History, and Resume Download";
w[widgetID-1] = "<div class='outer'><div class='middle'>
<div class='inner'><h2>" + w[widgetID-1] + "</h2></div></div></div>";
document.getElementById("widget"+widgetID).innerHTML = w[widgetID-1];
}
适用的 HTML:
<div class="widget" id="widget1" onclick="alert(1);" onmouseover="hoverWidgets('1')"
onmouseout="initializeWidgets()"></div>
当前小提琴:http: //jsfiddle.net/v3MGX/5/
最后的小提琴:http: //jsfiddle.net/v3MGX/8/