在-jQuery/Javascript之后将元素返回到原始CSS

在-jQuery/Javascript之后将元素返回到原始CSS,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我在web应用程序的页面上有一个固定的元素(菜单选项卡),这样当iPhone键盘打开时,菜单就会重新定位在滚动窗口中。当键盘关闭时,我希望元素根据页面加载CSS返回其原始位置 如何删除在焦点上添加的滚动事件?这似乎是问题所在,我下面的代码不起作用 此外,有没有一种方法可以保持元素的位置,并使页面在其后面平滑滚动?我的代码在滚动发生后将元素捕捉到位 谢谢 固定元素的我的CSS: #fixed-floating-menu { position: fixed; right: 0; top:

我在web应用程序的页面上有一个固定的元素(菜单选项卡),这样当iPhone键盘打开时,菜单就会重新定位在滚动窗口中。当键盘关闭时,我希望元素根据页面加载CSS返回其原始位置

如何删除在焦点上添加的滚动事件?这似乎是问题所在,我下面的代码不起作用

此外,有没有一种方法可以保持元素的位置,并使页面在其后面平滑滚动?我的代码在滚动发生后将元素捕捉到位

谢谢

固定元素的我的CSS:

#fixed-floating-menu {
  position: fixed;
  right: 0;
  top: 103px;
  z-index: 9999;
  background-color: @navy;
  border: @gray;
  text-align: center;
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px;
  border-color: @box-border-color;
  box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 3px 10px 0 rgba(0, 0, 0, 0.19);
  opacity: 0.7;

  tr td {
    padding: 10px;
  }

  .icon-popover-menu-side {
    color: @white;
  }
}
MY JS处理元素的键盘打开/重新定位:

// Adjust scrolling behaviour if iPhone
var iOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);

if (iOS) {
    $("body").mobileFix({                           // Pass parent to apply to
        inputElements: "input, textarea, select",   // Pass activation child elements
        addClass: "fixfixed"                        // Pass class name
    });
}

// iPhone scroll fix with keyboard open
$.fn.mobileFix = function (options) {
var $parent = $(this);

$(document)
    .on('focus', options.inputElements, function(e) {
        $parent.addClass(options.addClass);

        setTimeout(function() {
            var handPosition = window.pageYOffset - 7;
            $("#fixed-floating-menu").css("position", "absolute").css("top", handPosition).css("right", -10);
        }, 1);

        $(window).scroll(function(e) {
            var handPosition = window.pageYOffset - 7;
            $("#fixed-floating-menu").css("position", "absolute").css("top", handPosition).css("right", -10);
        });

    })
    .on('blur', options.inputElements, function(e) {
        $parent.removeClass(options.addClass);

        // Fix for some scenarios where you need to start scrolling
        setTimeout(function() {
            $(document).scrollTop($(document).scrollTop());
        }, 1);

        $(window).off('scroll', function(e) {
            $("#fixed-floating-menu").css("position", "fixed").css("top", -7).css("right", -10);
            return true;
            });

        });

    return this; // Allowing chaining
};
试着改变你的习惯

$(窗口)。滚动(功能(e){ var handPosition=window.pageYOffset-7; $(“#固定浮动菜单”).css(“位置”、“绝对”).css(“顶部”、“手位置”).css(“右侧”、-10); });

$(窗口)。打开(“滚动”,功能(e){ var handPosition=window.pageYOffset-7; $(“#固定浮动菜单”).css(“位置”、“绝对”).css(“顶部”、“手位置”).css(“右侧”、-10); });


据我所知,.off()方法删除了与.on()方法连接的事件处理程序。

.css()方法添加了内联样式。因此,您可以使用.attr('style','')或.removeAttr('style')重置它们;我不知道你发布了什么,但它不是简单的CSS。它很可能是一个预处理器
$('elementSelector').removeAttr('style');