2013/04/13

[jQuery]mouseoutとmouseoverとmouseenterとmouseleave

jQueryを本格的に使うようになってから気になっていたのですが、mouseoutとmouseoverとmouseenterとmouseleaveの違いってなんなのだろうか?

DOM Leve3 イベント mouseover/mouseout, mouseenter/mouseleave それぞれの違いについて」を読んでも、なかなか理解できなかったので(エントリーが悪いというわけでは決してありません。)実際に下のようにコードを組んでみました。

<div id="container" style="border:solid 1px red;height:100px;width:100px;padding:10px;">
 <span id="main" style="border:solid 1px blue;width:80px;">Test<br>Test<br>Test</span>
</div>
<script>
jQuery(function($){

 $('#container').mouseout(function(e){
  e.preventDefault();
  console.log('mouseout')
 });

 $('#container').mouseover(function(e){
  e.preventDefault();
  console.log('mouseover')
 });


 $('#container').mouseenter(function(e){
  e.preventDefault();
  console.log('mouseenter')
 });

 $('#container').mouseleave(function(e){
  e.preventDefault();
  console.log('mouseleave')
 });
});

</script>
で、実行してみた結果、spanタグにカーソルが入った場合、mouseoutとmouseoverの順で反応し、spanタグからカーソルがはずれた場合もmouseoutとmouseoverの順で反応しました。

一方で、divタグにカーソルが入った場合、mouseoverとmouseenterの順で反応し、divタグからカーソルが外れた場合、mouseoutとmouseleaveの順で反応しました。

ただ純粋にdivタグにカーソルが入ったorはずれたを探知したい場合は、「mouseenter」と「mouseleave」を使えばよさそうです。

0 コメント:

コメントを投稿