2010-11-18 6 views
4

私は<input type="range">スクロールを持ち、はmouseovermouseleaveのバックグラウンドを変更しています。ここで作業コードを確認することができます:http://jsfiddle.net/y8S57/type="range"はWebkitのみで動作するため、Webkitブラウザを使用してください。マウスがダウンしたときにJavascript mouseenterイベントが機能しない

問題は、マウスがtype="range"ボタンの上にダウンしていると、それぞれのイベントがトリガされていないmouseovermouseleaveゾーンに入った場合。何とかtype="range"を使用すると、起こっているはずの他のイベントがキャンセルされます。

<input type="range">をドラッグしてマウスを上回ると、どうすればいいですか?mouseoverdivmouseoverイベントがトリガーされますか?

HTML:

<input id="zoom" type="range" name="zoom" min="10" max="100" step="1" value="40" > 
<div id="zone"></div> 

はJavaScript:

$("#zone").mouseenter(function(){ 
    $(this).css({background:"red"}); 
}); 

$("#zone").mouseleave(function(){ 
    $(this).css({background:"black"}); 
}); 

答えて

2

残念ながら、それは、WebKitのはここだけ他の要素にマウスイベントを発射されていないように見えます。私はあなたを提供することができますすべてがダウンしてあなたのコードを短くする方法である:

$("#zone").hover(function(){ 
    $(this).css({background:"red"}); 
}, function(){ 
    $(this).css({background:"black"}); 
}); 

は、これはあなたが修正することができます(そして確かに、ブラウザによって意図的行動かもしれない)バグではありませんが、WebKit Bugzillaに掲載して行いますここで一番良い。意図的には、スライダーを突然覆うフライアウトメニューをトリガーしたくない場合など、他の理由で積極的にこれを行うことになります。

+0

Thanx Nick。私はこれが意図的でバグではないと思うが、私はこれを回避する方法を探していた。それはmousedownが他のすべてのイベントをキャンセルしているように見えます。それについて私ができることは何もありません。 – Mircea

+0

@Mircea - 私は同意しなければなりません。あなたがここでできることはあまりありません。そして、私が上に示した例のように、なぜ彼らがこれをするのか理解しています...私は行動がどこにでもあるとは思わない。 –

+0

私は理解しています。現時点では解決策がないので、私はこの回答に合格とマークします。 Thanx – Mircea

関連する問題