2017-10-04 6 views
1

私はdiv要素を2つ持っています.1番目のdiv要素のmouseoverで2番目のdiv要素を開いていて、mouseoutで閉じています。以下のコードを入力します。jQueryでmouseoverとmouseoutを使用して、期待される出力を与えない

jQuery('.something').on('mouseover', function() { 
 
    jQuery(jQuery(this).next('div')).slideDown(); 
 
}) 
 

 
jQuery('.something').on('mouseout', function() { 
 
    jQuery(jQuery(this).next('div')).slideUp(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="something" style="background:red; height:200px; width:200px"> 
 
</div> 
 
<div class="something1" style="background:#000; height:200px; width:200px; position:absolute; top: 0; display: none;"> 
 
</div>

要素にカーソルを合わせると、カーソルが少しでも移動される場合に問題があり、それはマウスオーバーとマウスアウトイベントを実行します。

Here is fiddle

+0

そしてまた、 'mouseenter'と' mouseleave'イベントを使用することが推奨されている理由だ

。 – lshettyl

答えて

3

あなたはあなたがマウスを使って対話している場合、それは同じイベントを処理し続けるだろう、なぜならmouseoverイベントが発生したpointer-events: none;

.something1 { 
    pointer-events: none; 
} 
+0

ありがとうShadowFoOrm。出来た。 –

+0

@SandeepPujareは、回答を受け入れると受け入れられたとマークすることを忘れないようにしてください。 – ShadowFoOrm

0

使用することができます。 pointer-events

jQuery('.something').on('mouseover', function() { 
 
    jQuery(jQuery(this).next('div')).slideDown(); 
 
}) 
 

 
jQuery('.something').on('mouseout', function() { 
 
    jQuery(jQuery(this).next('div')).slideUp(); 
 
})
.something1 { 
 
    pointer-events: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="something" style="background:red; height:200px; width:200px"> 
 
</div> 
 
<div class="something1" style="background:#000; height:200px; width:200px; position:absolute; top: 0; display: none;"> 
 
</div>

関連する問題