2013-12-19 97 views
4

我有jQuery代码,滚动页面的方式,所选控件在屏幕中间。Chrome浏览器选择选项列表滚动分离

$(document).ready(function() { 
$('.select').click(function() { 
    $('html, body').animate({ 
     scrollTop: 100 
    }, 100); 
    return false; 
}); 
}); 

不幸的是Chrome浏览器(版本31.0.1650.63)导致,如果文档后滚动选择其中扩展选项列表中被分离。在FF(25/26)和IE 10/11中工作正常。 Fiddle demo

+0

我觉得你将不得不为防止点击时打开选择列表,请执行动画,然后触发列表再次打开。 –

回答

0

我能做的最好是这样的:http://jsbin.com/ANiMacem/3/edit

添加此功能:

function openSelect(obj) { 

    var element = obj[0]; 
    if (document.createEvent) { // all browsers 
     var e = document.createEvent("MouseEvents"); 
     e.initMouseEvent("mousedown", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     element.dispatchEvent(e); 
    } else 
    if (element.fireEvent) { // ie 
     element.fireEvent("onmousedown"); 
    } 
} 

您的代码更改为:

$(".select").on('click',function() { 

      $('html, body').animate({ 
      scrollTop: 100 
     }, 100); 

     setTimeout(function(){ openSelect($(".select")); 
           openSelect($(".select")); //yes twice. 
          },100); 


     return false; 
    }); 
+0

谢谢你的黑客Royi。任何想法的原因 - 铬错误? – nmm

+0

嗯,我不知道,但如果它打扰你这么多,只有在铬,所以它可以使用一个黑客在ddl与铬31 1滚动的罕见情况。一世 –

相关问题