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

标签 jquery internet-explorer-8 internet-explorer-7 drop-down-menu offset

如果下拉菜单落在浏览器窗口区域之外,我将使用以下代码重新定位下拉菜单。但它在 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");}
    });
});

最佳答案

window.pageXOffset 属性为 not supported in IE (至少 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");}
    });
});

更具可读性,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");
        }
    });
});

关于jquery - 如果靠近窗口边缘,则重新定位下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6293393/

相关文章:

html - 带有 float 图像的 <p> 中的控制换行符

javascript - 试图用表情代替角色,功能却变得疯狂

css - 条件 css 无法针对 IE

html - 如何在 quirksmode 中自动将一个 div 在 IE8 中居中?

javascript - IE8 支持 Math.ceil() 和 Math.round() 吗?

iis - 401 - 仅使用 Windows 身份验证在 IE7 中未经授权。

html - 绝对定位的元素在ie7中不可见

jQuery.parseJSON 返回 null

javascript - 在 bootstrap-datepicker 中将日期设置为最初为空

jquery - 如果在 jQuery 中动画停止,如何防止回调?