2010-06-16 34 views
5

我有另一個問題,並且因爲答覆是在這裏速度很快,我再次回來!jquery效果問題:如何檢測scrollover是否觸發了mouseover?

我想用「鍵導航」,併爲此,我使用按鍵事件與向下/向上鍵)

當我的鼠標在DIV(DIV誰的contenaing一大桌)和我拉向下鍵:

我滾動到下一個TD +改變CSS樣式+

並再次刪除當前的風格,爲每個事件..

所以,因爲我的鼠標在主格,每個當我滾動(自動)到一個元素時,mouseover事件觸發紅..

所以,效果錯過..

這是一個完美的腳本:

  • 用戶使用鍵盤導航:鼠標懸停被禁用(所以風格上的變化只與上/下鍵)
  • 用戶不使用鍵盤:鼠標懸停改變風格

你能幫助我嗎?

代碼:

$("#content tr").mouseover(function() { 
    $("#content tr.use,#content tr.sel").removeClass("use sel"); 
    $(this).addClass("sel"); 
}); 

而且鍵盤導航代碼:http://pastebin.com/Hgn5Y1FV

(對不起再次,我的英語。)

感謝

+0

我真的不明白問題在這裏。 – jAndy 2010-06-16 12:19:47

+0

當我滾動時觸發鼠標懸停.. 當我用鍵盤導航滾動時,我添加對元素的影響。 效果被禁用,因爲elemen.mouseover也被觸發.. – Crupuk 2010-06-16 12:43:47

回答

0

試試這個。每當您(從箭頭鍵)開始滾動時,讓它將標誌設置爲true,當滾動停止時,將標誌設置爲false。

var keyboardScroll = false; // Set to true when keyboard scroll begins 
          //  and false when keyboard scroll ends 

然後讓mouseover代碼只在keyboardScroll爲false時才運行;

$("#content tr").mouseover(function() { 

    if(!keyboardScroll) { // Run code only if keyboard scroll is not true 
     $("#content tr.use,#content tr.sel").removeClass("use sel"); 
     $(this).addClass("sel"); 
    } 

}); 
+0

我已經試試這個.. 他們不工作,因爲scrollTo插件設置keyboardScroll = false爲滾動結束..所以,mouseover觸發.. :-( – Crupuk 2010-06-16 12:30:48

+0

@Crupuk - 我現在看到你有'keyNav'變量,奇怪的是它不工作,插件文檔聲明'onAfter'在動畫完成後運行 – user113716 2010-06-16 12:38:00

+0

看這個代碼: ('#='+'(「#」+ id).outerHeight(true)+'px')('#content tr')。('#content tr')。unbind('mouseover'); $ ,{'onAfter':function(){alert(「rebind」); $('#content tr')。bind('mouseover');}}); 解除綁定事件,但不綁定.. 也許,這是因爲#content> table> tr是用ajax動態添加的。因此,鼠標懸停是在ajax成功方法中定義的,並且該綁定是在外部調用的,因爲按鍵設置在「文檔」上,並且不需要放置在ajax中(這不是簡單的...:-s - - >對不起) – Crupuk 2010-06-16 12:59:40