可拖动的非模态弹出窗口 Jquery Mobile
Posted
技术标签:
【中文标题】可拖动的非模态弹出窗口 Jquery Mobile【英文标题】:Draggable Non-Modal Popup Jquery Mobile 【发布时间】:2013-07-22 13:58:48 【问题描述】:我希望在 Jquery mobile 中有一个弹出窗口,它不会阻止用户与页面交互,并且当页面的另一部分与页面的另一部分交互并保持可见时,data-dismissible="false" 即弹出窗口不会消失。
我试过了
$('#popupNew').popup( dismissible: false );
$('#popupNew').popup('open');
但这会创建一个模式弹出窗口,阻止用户与页面的其余部分进行交互。
【问题讨论】:
查看 JQuery UI 库,他们有一个很好的“对话框”小部件,可以轻松构建弹出窗口 :)! 【参考方案1】:简介
我希望这就是你所需要的一切。
如果单击弹出窗口外部的表面,则无法关闭弹出窗口 现在可以访问弹出窗口下方的元素 Popup 可拖动(在 Firefox、Chrome、android Chrome 上测试)还有一些笔记。这里使用的一些 javascript 代码不是我的,我说的是用于使其在移动设备上可拖动的修复程序。不幸的是,我不记得是谁的解决方案了。
CSS 用于在弹出窗口打开时使页面可点击。 Overlay div 名称是popup id 和后缀-screen 的组合,在本例中为#popupBasic-screen
。
工作示例
工作示例:http://jsfiddle.net/Gajotres/tMpf7/
使用的代码
html:
<!DOCTYPE html>
<html>
<head>
<title>jQM Complex Demo</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<!--<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>-->
<script src="http://code.jquery.com/ui/1.10.2/jquery-ui.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
</head>
<body>
<div data-role="page" id="index">
<div data-theme="b" data-role="header">
<h1>Index page</h1>
</div>
<div data-role="content">
<a href="#popupBasic" data-rel="popup" data-role="button" data-inline="true" data-transition="pop" >Basic Popup</a>
<a data-role="button" id="test">click me</a>
<div data-role="popup" id="popupBasic" data-dismissible="false">
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
<p>This is a completely basic popup, no options set.</p>
</div>
</div>
</div>
</body>
</html>
Javascript:
$(document).on('pagebeforeshow', '#index', function()
$('#popupBasic').draggable(
cursor: 'move'
);
$(document).on('click', '#test', function()
alert('Successful click!');
);
);
// This is a fix for mobile devices,, rest of the code is not mine
/iPad|iPhone|Android/.test( navigator.userAgent ) && (function( $ )
var proto = $.ui.mouse.prototype,
_mouseInit = proto._mouseInit;
$.extend( proto,
_mouseInit: function()
this.element
.bind( "touchstart." + this.widgetName, $.proxy( this, "_touchStart" ) );
_mouseInit.apply( this, arguments );
,
_touchStart: function( event )
this.element
.bind( "touchmove." + this.widgetName, $.proxy( this, "_touchMove" ) )
.bind( "touchend." + this.widgetName, $.proxy( this, "_touchEnd" ) );
this._modifyEvent( event );
$( document ).trigger($.Event("mouseup")); //reset mouseHandled flag in ui.mouse
this._mouseDown( event );
//return false;
,
_touchMove: function( event )
this._modifyEvent( event );
this._mouseMove( event );
,
_touchEnd: function( event )
this.element
.unbind( "touchmove." + this.widgetName )
.unbind( "touchend." + this.widgetName );
this._mouseUp( event );
,
_modifyEvent: function( event )
event.which = 1;
var target = event.originalEvent.targetTouches[0];
event.pageX = target.clientX;
event.pageY = target.clientY;
);
)( jQuery );
CSS:
#popupBasic-screen
display: none;
【讨论】:
我需要的是一个非模态弹窗,谢谢你的css! 如果我将任何按钮放在此模式中,它们将无法按下。关于如何解决这个问题的任何建议?编辑:NVM。通过在弹出窗口中应用句柄:“[data-role='header']”来使其工作。拖动和按钮工作哇哦:)以上是关于可拖动的非模态弹出窗口 Jquery Mobile的主要内容,如果未能解决你的问题,请参考以下文章
在jquery mobile中使用一个按钮关闭和打开弹出窗口