函数调用者无效元素

时间:2012-06-22 09:00:14

标签: javascript function function-call

如果我有:

<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)这样的东西,但我想从我的函数中找到调用者。

3 个答案:

答案 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');
    // ...
});

See it in action with future content here.

答案 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);

});

请检查:http://jsfiddle.net/shahvj27/6zE96/