问题链接:
在 jQuery 对话框中使用.scrollTop()
方法对我不起作用,HTML 标记是这样的:
<div id="toogleMAmaximized" style="background:#000000">
<div id="missionsMinimized" style="display:none;margin-top:10px;margin-bottom: 10px;cursor:pointer"><img src="images/missionsMinimized.png" alt="missions"/></div>
<div id="achivmentsMinimized" style="display:none;margin-top:5px;cursor:pointer"> <img src="images/achivmentsMinimized.png" /></div>
<div id="missions" class="unselected MAmaximized"></div>
<div id="achivments" class="unselected MAmaximized"></div>
<div id="dataMA" style="position:absolute;top:10px;right:10px;display:none;width:850px;height:500px;background-image: url('images/background-home.png') ; overflow-y:scroll"></div>
</div>
我使用 JavaScript 函数来填充dataMA
div。
function populateMissionsData(){
$('#missions').empty();
$('#dataMA').append('<h1 style="color:white">Current Missions:</h1>');
for (var $key in missionData['current']){
$('#dataMA').append(missionData['current'][$key]);
}
$('#dataMA').append('<h1 style="color:white">Not started missions:</h1>');
for (var $key in missionData['other']){
$('#dataMA').append(missionData['other'][$key]);
}
$('#dataMA').append('<h1 style="color:white">Ccompleted Missions:</h1>');
for (var $key in missionData['completed']){
$('#dataMA').append(missionData['completed'][$key]);
}
}
这很好用,因为我可以毫无问题地填充我的 dataMA。现在我有一个按钮,可以扩展 dataMA 中使用livequery
插件的 div 的内容,这是滚动问题:
$(".plus").livequery('click',(function(){
key = $(this).attr('key').toString();
$('#data'+ key).slideToggle('fast');
//this is the problem, it does not scroll the dialog.
$('#dataMA').scrollTop($('#data'+ key).offset().top);
//Update - this does not work either
$('#dataMA').scrollTop($('#dataMA')[0].scrollHeight);
//Update 100 - This is not working either
$('#dataMA').scrollTop($('#data'+ key).offset().top - $('#dataMA').offset().top + $('#dataMA').scrollTop());
$(this).toggleClass('less')
if($(this).hasClass('less')){
$(this).attr('src','images/less.png');
}else{
$(this).attr('src','images/plus.png');
}
}));
当我触发加号按钮时,它不会滚动,但是当我再次单击加号按钮时,它就像向下滚动和向上滚动一样。
我用 更改了dataMA
选择器toogleMAmaximized
,它滚动但没有按预期滚动(它向上移动了其中的内容)
更新 1
如果你有兴趣,我的环境:
jQuery
v1.7.1
jQuery UI
1.8.16
liveQuery
1.1.1
更新 2
我将环境更新到jQuery
(1.7.2) 和jQuery UI
(1.8.21) 的最新版本,仍然遇到同样的问题。
更新 3
好的,我有一个fiddle
文件供你们查看问题。我在我的小屏幕上无法正确显示,希望你们能做得更好。首先是点击右边的图片,然后点击第一个方块。要查看滚动问题,请单击标题上的任何非加载图标(它们具有plus
类)。dataMA 变量是我对数据库的查询的替换,它在结果中返回我放在那里的字符串。我在使用请求添加的标签livequery
时遇到了很多问题。.on()
.post()
更新 4 分辨率高于 1300x768 的任何人都可以告诉我他们是否正确获取了 jsfiddle 文件吗?我无法解决这个问题。
更新 5
我可以滚动几个元素,但是当它在包含的 div 之外的元素时,它不会滚动到,但是如上所述,当我再次按下按钮时,它会尝试向上滚动。
更新 6
我更新了jsfiddle以便更好地理解,过程是一样的:点击图片->弹出对话框->点击任务->向下滚动到最后一个(厚墙)->点击丢失的图片到对(我不知道为什么它不显示 alt 内容)这样做会显示一个隐藏的内容,再次单击它会隐藏它。然而,自动滚动没有完成。