我正在使用jquery手机弹出窗口。这是在页面内。有一个图像可以打开此弹出窗口。现在,如果弹出窗口打开时如何阻止整个页面滚动,如果弹出窗口关闭则允许滚动?
<a href="#settingsPopUp" data-rel="popup" data-position-to="window" data-inline="true" data-icon="gear"><img src="settings1.jpg" alt="Settings"></a>
<br>
<div data-role="popup" id="settingsPopUp" data-theme="a" class="ui-corner-all">
<div style="padding:10px 20px;">
<h3>Location Details</h3>
</div>
</div>
答案 0 :(得分:7)
我混合了 Lefois 的解决方案和 Simona Adriani 的解决方案。它适用于浏览器和手机WebView(PhoneGap + jquerymobile)。
$(document).on('popupafteropen', '[data-role="popup"]', function(event, ui) {
$('body').css('overflow', 'hidden').on('touchmove', function(e) {
e.preventDefault();
});
}).on('popupafterclose', '[data-role="popup"]', function(event, ui) {
$('body').css('overflow', 'auto').off('touchmove');
});
答案 1 :(得分:4)
对我来说,这种方法不起作用,它适用于浏览器,但不适用于Phone Gap应用程序。所以我以这种方式解决它:
$('#Popup-id').on({
popupbeforeposition: function(){
$('body').on('touchmove', false);
},
popupafterclose: function(){
$('body').off('touchmove');
}
});
希望它有所帮助!
答案 2 :(得分:2)
当模态框打开时,如何将overflow-y: hidden;
分配给您不想滚动的元素? (通常是<body>
)
答案 3 :(得分:1)
我不能评论以前的答案,但有一点错误。下面这段代码为我做了诀窍:
$( "#mypopup" ).popup({
afteropen: function( e) {
$('body').css('overflow','hidden');
},
afterclose: function(e) {
$('body').css('overflow','auto');
}
});
答案 4 :(得分:0)
有两种方法:
Either "overflow:hidden" the body
Or give a "position:fixed" to the popup so this will scroll in the viewport.
答案 5 :(得分:0)
您可以将事件用于弹出窗口小部件
$( "#settingsPopUp" ).popup({
afteropen: function( event, ui ) {
$('body').css({
overflow:'hidden'
});
},
afterclose: function( event, ui ) {
$('body').css({
overflow:'auto'
});
}
});
我认为这是一个动态的解决方案,它将解决您的问题。