2013-01-16 70 views
3

我有一個帶滾動條的div。 使用Firefox時,當我點擊滾動條將其向下拖動以查看div列表時,模糊事件被觸發並隱藏我設置爲在模糊被觸發時隱藏的div。 如何防止模糊火災時,使用滾動條:div滾動條上的jquery模糊事件

$("#mydiv").blur(function() { 
    $('#mydiv').fadeOut(); 
    console.log("fadeout blur"); 
}); 

我展示這個div使用:

$('#mydiv').fadeIn(); 

我想股利隱藏時,其不活躍,但無法掩飾的時候我嘗試點擊滾動條。

+0

你能在jsfiddle.net上設置一個例子嗎?或發佈你的整個代碼,我會爲你設置它 –

+0

我無法讓這發生在我身上。請發佈您的代碼。 –

+0

似乎你的滾動條沒有形成在div和點擊它導致調用模糊。請檢查用於顯示滾動div的css/style是否正在執行您期望的操作(在div內形成滾動條)。 –

回答

2

可能這是你在找什麼

$(document).ready(function(){ 
     $('#mydiv').fadeIn(); 

     $("body").bind('click', function(ev) { 
     var myID = ev.target.id; 
     if (myID !== 'mydiv') { 
      $('#mydiv').fadeOut(); 
     } 
    }); 
}); 

這將click事件綁定與身體,並檢查觸發點擊事件的元素的ID。如果它不匹配DIV,div將被關閉,否則div將始終打開。

1

你可以這樣做一個:

$(window).scroll(function() { 
    $('#mydiv').css('display','block'); 
}); 
+0

這是否會觸發您的頁面中的所有滾動操作或您的div的滾動條? –

+0

這沒有奏效 –

1
var scrolling = false, scrollingTimeout, blurTimeout; 

$(window).scroll(function() { 
    if (scrollingTimeout) { 
     clearTimeout(scrollingTimeout); 
    } 
    scrolling = true; 

    scrollingTimeout = setTimeout(function(){ 
     scrollingTimeout = null; 
     scrolling = false; 
    }, 300); 
}); 
$("#mydiv").blur(function() { 
    var that = $(this); 
    if (!scrolling) { 
     that.fadeOut(); 
    } else { 
     if (blurTimeout) { 
      clearTimeout(blurTimeout); 
     } 
     blurTimeout = setTimeout(function() { 
      blurTimeout = null; 
      that.focus(); 
     }, 600); 
    } 
}); 

看到jQuery scroll() detect when user stops scrollingCan I declare logic on jQuery for the start and end of a scrolling event?

1

似乎你的滾動條沒有形成div &點擊它導致呼叫模糊。請檢查用於顯示滾動div的CSS/style是否正在執行您期望的操作(在div內形成滾動條),如果是這種情況,則使用父div(兩個滾動條)&使用focusOut/blur事件在父母div包含兩個。