首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在打开jQuery UI模式对话框时禁用浏览器滚动

在打开jQuery UI模式对话框时禁用浏览器滚动
EN

Stack Overflow用户
提问于 2011-02-03 22:27:05
回答 13查看 100.2K关注 0票数 53

是否可以在打开jQuery UI模式对话框时禁用浏览器中的滚动(仅用于浏览器的滚动条)。

注意:我确实希望在对话框中启用滚动

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2011-02-03 22:35:42

您不能完全禁用滚动,但可以使用通常执行滚动的鼠标滚轮和按钮停止滚动。

看一看this answer,了解它是如何做到的。在close上,您可以在create event上调用这些函数并将一切恢复到正常状态。

票数 4
EN

Stack Overflow用户

发布于 2011-08-11 15:02:35

代码语言:javascript
复制
$(formObject).dialog({
 create: function(event, ui) {
  $("body").css({ overflow: 'hidden' })
 },
 beforeClose: function(event, ui) {
  $("body").css({ overflow: 'inherit' })
 }
});

或者,正如我在下面的评论中提到的:

代码语言:javascript
复制
var dialogActiveClassName="dialog-active";
var dialogContainerSelector="body";

$(formObject).dialog({
 create: function(event, ui) {
   $(dialogContainerSelector).addClass(dialogActiveClassName);
 },
 beforeClose: function(event, ui) {
   $(dialogContainerSelector).removeClass(dialogActiveClassName);
 }
});

但实际上,老实说,你应该确保创建一个对话框将一个事件冒泡到你的窗口对象,在那里你将观察到所说的事件,大致类似于下面这样的伪事件:

代码语言:javascript
复制
var dialogActiveClassName="dialog-active";
var dialogContainerSelector="body";
$(window).on("event:dialog-opened", function(){
    $(dialogContainerSelector).addClass(dialogActiveClassName);
});
$(window).on("event:dialog-closed", function(){
    $(dialogContainerSelector).removeClass(dialogActiveClassName);
});
票数 75
EN

Stack Overflow用户

发布于 2012-08-23 22:34:28

我需要做完全相同的事情,只需在主体中添加一个类即可:

代码语言:javascript
复制
.stop-scrolling {
  height: 100%;
  overflow: hidden;
}

在IE,FF,Safari和Chrome中测试,当你想重新启用滚动功能时,添加类,然后删除。

代码语言:javascript
复制
$('body').addClass('stop-scrolling')
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4887332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档