jQuery位置适用于本地主机Cassini,jsFiddle,但在IIS或IIS快速传输时始终返回0
问题描述:
我有一个每行包含一个时间的表。表格应该显示一天中最近的时间。例如,如果当前时间是12:03,则表格上的第一行应该是12:00。基本上表格自动滚动取决于一天的时间。jQuery位置适用于本地主机Cassini,jsFiddle,但在IIS或IIS快速传输时始终返回0
我有一个在Visual Studio开发环境(Cassini)中运行时工作正常的代码。该代码也适用于jsFiddle here,但是当我将代码安装到服务器中或使用IIS Express运行时,位置总是返回0.我不明白为什么jQuery的位置不起作用,或者在IIS或IIS快车时返回0用来。
下面是jQuery代码:
$(document).ready(function() {
var tableID = $('.dcBooking')[0].id; //get the id of table.
var layerID = $('#' + tableID).parent().closest('div').attr('id'); //get the id of the div created by .Net
var currentdate = new Date();
var hour = currentdate.getHours();
var min = currentdate.getMinutes();
var mod = min % 10;
min = (min - mod); //Rounded to the closest previous 10 minutes
var id = getID(hour, min);
var timeTag = $('#' + id);
$('#' + layerID).animate({ scrollTop: timeTag.position().top }, 'slow');
});
HTML的例子:
<div id="id1" style="overflow-x:visible;overflow-y:scroll;height:350px;position:relative;">
<table class="dcBooking">
<tr id="h08_00_0"><td>08:00</td><td>Joe</td></tr>
<tr id="h12_10_0"><td>12:10</td><td>John</td></tr>
:
:
<tr id="h17_00_0"><td>07_00</td><td>Anna</td></tr>
</table>
</div>
我已经江郎才尽了为什么在卡西尼或的jsfiddle运行时代码返回一个位置,但是它不当安装在服务器上或运行在IIS Express中时。我考虑过安全问题,但它运行在我的电脑上与卡西尼,但没有与IIS快递,所以我认为必须是一些IIS设置,但我不知道在哪里看IIS。任何人都可以指出什么或在哪里寻找或有一个想法可能是什么原因的问题?
答
我仍然不知道是什么导致了这个问题,但我能够通过给javascript添加延迟来使它工作。我认为也许等待加载而不是文档准备就是解决方案,但它仍然无法与$(window).load()一起使用。我添加了300毫秒的延迟,并且位置返回的值不是零。如果有人有类似的问题,这是我做了什么工作。
$(document).ready(function() {
setTimeout("setScrolling()", 300);
});
function setScrolling() {
var currentdate = new Date();
var hour = currentdate.getHours();
var min = currentdate.getMinutes();
var mod = min % 10;
min = (min - mod); //Rounded to the closest previous 10 minutes
var id = 'h' + hour + "_" + min;
var timeTag = $('#' + id);
$('#id1').animate({ scrollTop: timeTag.position().top }, 'slow');
}