2012-08-10 141 views
2

任何關於如何聆聽mousedown的建議$(document) div的溢出:滾動滾動條?監聽鼠標事件...除了div的溢出:滾動滾動條?

我不知道什麼元素滾動條是爲了引用它 ...

+0

,看event.target。這將告訴你什麼是元素 – MrOBrian 2012-08-10 19:51:02

+0

更改'mousedown'到'點擊'建議由@adeneo在[評論](http://stackoverflow.com/questions/11908292/listen-for-mouse-events-except- a-divs-overflowscroll-scrollbar#comment15854666_11908377)爲我工作 – anu 2016-11-16 12:24:40

回答

2

您可以檢查自己的目標有:

$(document).on('mousedown', function(e) { 
    console.log(e.target); 
}); 

FIDDLE

滾動條不是真的是一個元素,點擊處理程序將不起作用,但似乎mousedown被解僱,但只會給你滾動條所屬的元素。

要排除滾動條我猜你必須弄清楚它的大小,然後檢查mousedown上的鼠標位置,看它是否在滾動條區域內。

+0

以及如何計算滾動條區域? – jedierikb 2012-08-10 20:01:24

+1

這有點複雜,首先你需要創建一些元素,並檢查有無滾動條的大小以查找大小(通常爲16px,但你永遠不知道),那麼你需要從事件中獲取鼠標位置。 pageX/Y等,最後是元素位置,然後確定鼠標是否在scollbar區域被按下。如果可能的話,點擊代替mousedown將會簡單得多,因爲點擊不會在滾動條上觸發。 – adeneo 2012-08-10 20:23:31

+0

謝謝。有趣的點擊...這是很好的知道。 – jedierikb 2012-08-10 20:27:49

0
<div class='scrollHolder' style='overflow:scroll;'> 
<div class='scrollContent'> 
</div> 
</div> 

$(document).on("mousedown", function(event) 
{ 
    var onScrollbar = false; 
    if (event.target.className == "scrollHolder") 
    { 
     var s_c = $(event.target).children(".scrollContent"); 

     if (event.pageX-s_c.offset().left > s_c.innerWidth()) 
     { 
      onScrollbar = true; 
     } 
    } 
}); 
在你的鼠標按下處理