我有一个元素(让我们说div为id" Test"),设置高度和宽度。随机放置在这个元素中的是其他(较小的)元素(让我们说id' s" inner1"," inner2"," inner3") ,但也有空格,没有元素的空间。我希望有一个函数在单击主元素时触发,但是然后检测到我是否点击了空格,如果没有,则单击一个内部元素,如果是,则返回内部元素的id。
哦,内心元素是动态生成的,所以我不知道手中的id,我知道它们不是div或spans ......(同样的例子) ,但我会有多种类型的元素。)
谢谢大家。
编辑:(感谢Xotic750提醒我发布我的意思:))
我没有尝试太多,因为我不知道如何通过javascript调用检测内部点击..
但这是一个例子:
<div id="test">
<div id="inner1"></div>
<span id="inner2"></span>
<div id="inner3"></div>
</div>
<style>
div#test {
width:300px;
height:400px;
position:relative;
display:block;
border:1px solid blue;
}
div#test div, div#test span {
display:block;
position:absolute;
border:1px solid red;
}
div#inner1 {
top:15px;
left:15px;
height:15px;
width:15px;
}
span#inner2 {
top:65px;
left:65px;
height:15px;
width:15px;
}
div#inner3 {
top:155px;
left:155px;
height:15px;
width:15px;
}
</style>
答案 0 :(得分:24)
我认为这就是你的意思?
var test = document.getElementById('test');
function whatClicked(evt) {
alert(evt.target.id);
}
test.addEventListener("click", whatClicked, false);
div#test {
width: 300px;
height: 200px;
position: relative;
display: block;
border: 1px solid blue;
}
div#test div,
div#test span {
display: block;
position: absolute;
border: 1px solid red;
}
div#inner1 {
top: 15px;
left: 15px;
height: 15px;
width: 15px;
}
span#inner2 {
top: 65px;
left: 65px;
height: 15px;
width: 15px;
}
div#inner3 {
top: 155px;
left: 155px;
height: 15px;
width: 15px;
}
<div id="test">
<div id="inner1"></div>
<span id="inner2"></span>
<div id="inner3"></div>
</div>
答案 1 :(得分:2)
向Test div添加onClick
处理程序,并使用事件冒泡来捕获内部元素的点击。您可以从事件对象中提取单击的元素。
document.getElementById("Test").onclick = function(e) {
e = e || event
var target = e.target || e.srcElement
// variable target has your clicked element
innerId = target.id;
// do your stuff here.
alert("Clicked!");
}