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 コメント:
コメントを投稿