2012-07-11 75 views
6

SVG元素看看這個jsFiddle的mouseenter /鼠標離開事件沒有觸發使用jQuery.on

mouseenter/mouseleave不會出現在與SVG一起選擇使用jQuery時要正確射擊(拉斐爾2.0)。我知道開箱即用的SVG jQuery並不是100%與SVG兼容,但是,據我所見,它似乎只會影響IE9。

奇怪的是,如果您快速移動鼠標開啓/關閉svg元素(確保您從HTML窗格中移除),然後重新啓動它,事件會啓動(但不是每次都會)。只是爲了確保它不是一個普遍的問題on我迷上了click事件,每次都能正常工作。

想知道是否有人知道這是一個錯誤還是一個已知的問題?

+0

適合我(鉻) – 2012-07-11 15:20:09

+0

@StefanFandler - 「*據我所知,它似乎隻影響IE9 *」。標記爲澄清。 – James 2012-07-11 15:28:38

+0

我避免像瘟疫一樣將jQuery與SVG結合使用。這是一個雷區,有這樣的例外。我認爲你的bug與這個http://forum.jquery.com/topic/1-6-2-broke-svg-hover-events(兩年前未解決)有關。 – Duopixel 2012-07-11 23:21:11

回答

2

這是1.7.2中的一個錯誤。見ticket

如果我使用jQuery(邊緣),問題就會消失,因此應該在下一個預定版本(1.8)中進行修復。

0

我認爲重要的是要注意,使用jQuery 1.8.2和android通過phonegap沒有使用jq-mobile。我看到觸摸和鼠標事件隨機選擇,並不同步... 意義細微差異觸發鼠標輸入和點擊與觸發不同觸發 touchStart(有時如果沒有輸入甚至目前已發送mouseEnter發生),然後2 touchEnds。 如果你有一個touchEvent觸發鼠標輸入第二個觸摸模式(開始,結束,結束)發送一個mouseLeave(假設你不隨機通過微妙的輕拍差異觸發點擊組合)。

我的期望是它們應該在兩種情況下一起觸發,除了一個(觸摸事件)更多地用於多點觸摸需要,或者識別在通過觸摸界面模擬的點擊事件之後不會出現mouseLeave事件(不知何故?...)。 我的其他期望是,如果我沒有處理或有一個鼠標事件的註冊偵聽器,但我做觸摸事件,反之亦然,不同的事件將會或不會被髮送取決於什麼樣的聽或攔截(返回false?或通過preventDefault等來停止冒泡)。

無論如何,在我看來,目前您需要以隨機無關的不可預知的方式來處理這兩種類型的事件,這對於我來說意味着放棄鼠標世界中最好的可觸摸設備上的「over」事件。

基本上我想觸摸不應該發送一個超過/輸入事件,而點擊也應該等於觸摸,如果我聽觸摸preventDefault應該取消所述mouseEvents。

無論如何,它是最有意義的發送兩個,讓我把它整理出來。 我懷疑的混亂是因爲你只聽到一半發送的事件(缺少觸摸)。 ...好運!這些想法可能有助於某人處理較高級別或較低級別開發團隊的混亂情況。 (這是瀏覽器級別的責怪?我認爲是這樣)。

相關問題