0

如果我有 :

<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>

该函数由mydivonmouseover 调用,但如果鼠标光标位于mydiv1函数上,则返回mydiv1.

如何让它始终显示mydiv

PS:我知道我可以使用类似的东西myfunc(this),但我想从我的函数中找到调用者。

4

3 回答 3

2

就个人而言,我更喜欢使用 jQuery 来连接事件:

$('#mydiv').on('mouseover',function(){
    var id = $(this).attr('id');
    // ...
});

如果这应该应用于多个元素,那么请改用类选择器:

$('.hoverable').on('mouseover',function(){
    var id = $(this).attr('id');
    // ...
});

要同时处理未来的内容,请将事件处理程序附加到一个共同的祖先,然后在第二个参数中选择可悬停元素on

$('body').on('mouseover','.hoverable',function(){
    var id = $(this).attr('id');
    // ...
});

在此处查看未来内容的实际应用。

于 2012-06-22T09:10:43.417 回答
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>
于 2012-06-22T09:04:49.160 回答
0

您可以使用 Jquery 轻松完成此操作。

$('#mydiv').hover(function(){
alert(this.id);

});​​​​​​​</p>

检查这个:http: //jsfiddle.net/shahvj27/6zE96/

于 2012-06-22T09:27:27.080 回答