2014-12-04 80 views
0

我有一个下拉菜单,当您在对话框内的网格中单击一个图标(实际上是一个链接的小黑色过滤器)时打开下拉菜单。如果我从target.position()获得坐标,它就完全在Chrome中定位。如何将css下拉菜单放置在IE和Chrome/Firefox的相同位置

这里是它使用target.position()看起来像在Chrome浏览器截图:

scope.showFilterMenu = function ($event, id) { 
    var modal = $('div[kendo-window]'); 
    var target = $($event.currentTarget); 
    var offset = target.position(); // THIS WORKS FOR CHROME BUT NOT IE 
    var offset = target.offset(); // THIS WORKS FOR IE BUT NOT CHROME 
    var top = offset.top; 
    var left = offset.left + 25; // 25 is extra buffer 
    modal.append(filterMenu);    
    var filterMenu = $('ul[sgid=' + id + ']'); // the dropdown menu is a ul list    
    filterMenu.css({ 
     'width': 50 + 'px', 
     'top': dd_top + 'px', 
     'position': 'fixed', // must be fixed so that it follows the window contract and expand 
     'left': left // align LHS with filter icon 
    }); 

}

enter image description here

但使用target.position()在IE中把它扔了完全关闭,我必须使用target.offset()。有谁知道我可以如何为两个浏览器找到解决方案?

enter image description here

+0

你在说哪个IE版本? – 2014-12-04 12:51:03

+0

我正在使用IE 11 – Tone 2014-12-04 12:52:11

回答

0

你为什么不做个简单的if condition?像if(IE) {X} else {Y}

var IE = (document.all) ? true : false; 

编辑:

此外,您可以对此进行确认:

var ie_browser = jQuery.browser.msie; 

好吧,忽略这一个。它在jQuery 1.9中被删除。


也许这有助于: 有一个IE 11更新包括在内。 Check if user is using IE with jQuery

+0

谢谢。是的,我的确想到了这一点。必须先由我的老板运行它:-(这是一个完全安全的检查,(document.all)吗? – Tone 2014-12-04 12:55:30

+1

我不知道它是否是100%保存。也许你必须检查它的IE11 10和更低应该工作正常。请参阅我的编辑。 – 2014-12-04 12:58:37

+0

谢谢.jQuery很好,我将不得不看看我的老板是否喜欢解决方案... – Tone 2014-12-04 13:03:22