2013-01-16 71 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包含两个。