无法获取表单's面板的x和y坐标,并在加载时从cookie中设置它们
Unable to get form's panel x and y coordinates and to set them from a cookie on load
我有一个表单,里面有一个面板:
<form id="form" action="/accent/login/enter/">
<div draggable="true" id="panel" title="">
...
面板为draggable
和resizable
,有两个事件:
$('#panel').bind("resize",function(event){
saveform();
})
.bind("drag",function(event){
saveform();
});
函数saveform
应该保存窗体的面板width
和height
以及x和y坐标。它把它保存在饼干里。我想要这种行为,这样当用户刷新页面时,表单的面板就会根据保存在cookie中的属性进行定位和对齐。我面临的第一个问题是,x和y坐标只重新计算一次,即用户第一次拖放表单时。至于高度和宽度,它们被正确地重新计算。我面临的第二个问题是,我无法设置窗体的x和y坐标——我不知道我使用的方法是否合适。所以,我的saveform
函数看起来是这样的:
var saveform = function(){
var pos = $('#form:first').offset(), // recalculated only once
height = $('#panel').height(), // it is saved ok
width = $('#panel').width(), // it's ok too
data = {top:Math.round(pos.top),left:Math.round(pos.left),
height:Math.round(height),width:Math.round(width)};
$.cookie('form',data);
}
这是我用来设置面板的x和y坐标的方法:
var data = $.cookie('form');
$('#panel').position({
of:$('#body'),
my:'left top',
at:'left top',
offset:data.left + " " + data.top
})
好吧,我找到了一个解决方案。现在,我的saveform
函数如下:
var saveform = function(){
var pos = $('div.panel').offset(), //I added class="panel" to main div
height = $('#panel').height(),
width = $('#panel').width();
$.cookie('form',{top:pos.top,left:pos.left,
height:height,width:width});
}
我把面板的x和y设置成这样:
var data = $.cookie('form');
$('#panel').height(data.height).width(data.width)
.offset({top:data.top,left:data.left});
因此,主要技巧是以适当的方式应用offset
方法。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 无法获取表单's面板的x和y坐标,并在加载时从cookie中设置它们
- 传单不会加载负坐标切片
- 谷歌地图在angularjs中懒惰加载动态地理坐标更新
- 在我的网页中将坐标加载到谷歌地图
- 为什么这个HTML5应用程序的性能在坐标加载时下降?
- 加载坐标时的距离误差
- D3:加载多个CSV文件,并使用并行坐标将其可视化
- 在Angular中异步加载工厂坐标
- 当使用angular $scope.$watch触发时,未被jmpress加载的元素的坐标和旋转
- 使用传单从json文件加载圆坐标/使用从圆对象检索的数据
- 从数据库中加载折线坐标并在地图中显示