如果靠近窗口边缘,则重新定位下拉菜单

Gho*_*ool 3 jquery offset internet-explorer-8 internet-explorer-7 drop-down-menu

我正在使用以下代码重新定位我的下拉菜单,如果它们落在浏览器窗口区域之外.但是它在Internet Explorer 7和8中不起作用.

jQuery(document).ready(function(){
jQuery("#nav>ul>li").each(function() {
    pos = jQuery(this).offset();
    if(pos.left + 100 > jQuery(window).width()+window.pageXOffset-jQuery(this).width()) {
    jQuery(this).addClass("nav-shift");}
});
});
Run Code Online (Sandbox Code Playgroud)

jen*_*ram 5

IE中不支持window.pageXOffset属性(至少7和8).尝试改为:$(window).offset().left

jQuery(document).ready(function(){
    jQuery("#nav>ul>li").each(function() {
        pos = jQuery(this).offset();
        if(pos.left + 100 > jQuery(window).width()+jQuery(window).offset().left-jQuery(this).width()) {
        jQuery(this).addClass("nav-shift");}
    });
});
Run Code Online (Sandbox Code Playgroud)

更具可读性,IMO:

jQuery(document).ready(function() {
    jQuery("#nav > ul > li").each(function() {
        var $this = jQuery(this),
            $win = jQuery(window);

        if ($this.offset().left + 100 > $win.width() + $win.offset().left - $this.width()) {
            $this.addClass("nav-shift");
        }
    });
});
Run Code Online (Sandbox Code Playgroud)