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>

関数はonmouseoverによって呼び出されmydivますが、マウスカーソルが上にある場合、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');
    // ...
});

将来のコンテンツも処理するには、イベントハンドラーを共通の祖先にアタッチし、2番目のパラメーターでホバー可能な要素を次のように選択します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 に答える