2010-11-18 91 views
4

我有一個<input type="range">滾動和一個divmouseovermouseleave更改其背景。您可以在此處看到工作代碼:http://jsfiddle.net/y8S57/,請使用Webkit瀏覽器,因爲type="range"僅適用於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 2010-11-18 11:08:38

+0

@Mircea - 我必須同意,你可以在這裏做的事情不多......而且就像我上面給出的例子一樣,我明白他們爲什麼會選擇這樣做......我不認爲這種行爲正在發生。 – 2010-11-18 12:00:08

+0

我明白了。我會將此答案標記爲已接受,因爲目前尚無解決方案。 Thanx – Mircea 2010-11-18 12:23:22