Javascript jqueryui.widgets在隐藏子对象时重置其滚动位置

Javascript jqueryui.widgets在隐藏子对象时重置其滚动位置,javascript,jquery,debugging,jquery-ui,Javascript,Jquery,Debugging,Jquery Ui,我在最近的项目中大量使用jqueryui。不幸的是,由于jQueryUI小部件在包含带有滚动条的元素时表现出一些非常古怪的行为,我遇到了一个大麻烦 在其中一个.Scroll container元素中向下滚动 单击手风琴标题 单击旧标题-注意元素已自动滚动到顶部 有没有办法防止这种情况发生?它与我的一个利用jQuery滚动的主要插件发生了冲突。我完全不知道在这里该做什么 也许这是一个值得在jQuery UI开发论坛中提及的bug 编辑 到目前为止,该错误已在 Chrome-8.0.552.23

我在最近的项目中大量使用jqueryui。不幸的是,由于jQueryUI小部件在包含带有滚动条的元素时表现出一些非常古怪的行为,我遇到了一个大麻烦

  • 在其中一个
    .Scroll container
    元素中向下滚动
  • 单击手风琴标题
  • 单击旧标题-注意元素已自动滚动到顶部
  • 有没有办法防止这种情况发生?它与我的一个利用jQuery滚动的主要插件发生了冲突。我完全不知道在这里该做什么

    也许这是一个值得在jQuery UI开发论坛中提及的bug

    编辑 到目前为止,该错误已在

    • Chrome-
      8.0.552.231
      在OSX上
      10.6.5
    • Safari—
      5.0.3
      在OSX上
      10.6.5
      (有意义)
    • FF-
      3.6.12
      在OSX上
      10.6.5
    而且,不存在于

    • FF-
      3.6.12
      在OSX上
      10.6.5

    根据回答我问题单的jQuery UI开发人员的说法:

    浏览器就是这样工作的,一旦你隐藏了一个元素,它就会失去滚动位置


    我也有同样的问题。我提出的一个解决方法是在创建ui对象后设置其id。然后在隐藏对象之前保存scrollTop()位置。当我再次显示该对象时,我只需将scrollTop()设置为保存的值

    // Set the id of the object if you have multiple objects with the same class
    if ($("#divScroll").length == 0) {    // If the object does not exist with an id
        $(".ui-jqgrid-bdiv").each(function () {    // Select each object via class
            strID = $(this).attr("id");
            // If the current object (selected via class) does not have an id, set id
            if (strID == undefined || strID == false) {
                $(this).attr("id", "divScroll");
            }
        });
    }
    
    // Save the scroll position before hide()
    intScrollTop = $("#divScroll").scrollTop();
    $("#divScroll").hide();
    
    // Set the scroll position to the saved value after show()
    $("#divScroll").show();
    $("#divScroll").scrollTop(intScrollTop);