如果我有:
<div id="mydiv" onmouseover="myfunc()">
<div id="mydiv1"></div>
<div id="mydiv2"></div>
</div>
<script>
function myfunc() {
var evt = window.event || arguments.callee.caller.arguments[0];
var em = evt.target || evt.srcElement;
return em.id;
}
</script>
该函数由mydiv
onmouseover调用,但如果鼠标光标超过mydiv1
,则函数返回mydiv1
。
如何让它始终显示mydiv
?
P.S:我知道我可以使用像myfunc(this)
这样的东西,但我想从我的函数中找到调用者。
答案 0 :(得分:2)
就个人而言,我更愿意使用jQuery来连接事件:
$('#mydiv').on('mouseover',function(){
var id = $(this).attr('id');
// ...
});
如果这应该应用于多个元素,那么请改用类选择器:
$('.hoverable').on('mouseover',function(){
var id = $(this).attr('id');
// ...
});
要处理将来的内容,请将事件处理程序附加到公共祖先,并在第二个参数中选择hoverable元素到on
:
$('body').on('mouseover','.hoverable',function(){
var id = $(this).attr('id');
// ...
});
答案 1 :(得分:1)
您应该通过JavaScript附加事件处理程序。然后,您可以访问其中直接绑定的元素this
。
<div id="mydiv">
<div id="mydiv1"></div>
<div id="mydiv2"></div>
</div>
<script>
function myFunc() {
return this.id;
}
var mydiv = document.getElementById('mydiv');
mydiv.onmouseover = myFunc;
</script>
答案 2 :(得分:0)
您可以轻松地使用Jquery执行此操作。
$('#mydiv').hover(function(){
alert(this.id);
});