jQuery位置适用于Localhost Cassini,jsFiddle,但在IIS或IIS表达时总是返回0

时间:2013-05-09 09:41:43

标签: jquery asp.net iis cassini

我有一个表,每行包含一个时间。该表应显示当天最接近的时间。例如,如果当前时间是12:03,则表格上的第一行应为12:00。基本上表格自动滚动取决于一天中的时间。

我有一个在Visual Studio开发环境(Cassini)中运行时工作正常的代码。该代码也适用于jsFiddle here,但是当我在服务器中安装代码或使用IIS Express运行代码时,位置始终返回0.我不明白为什么jquery位置不起作用或返回0时使用IIS或IIS express。

以下是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>                  

我已经没有想法为什么代码在Cassini或jsFiddle中运行时返回一个位置,但是当它安装在服务器上或在IIS Express中运行时它没有。我考虑过安全问题,但它在我的计算机上运行Cassini,但没有IIS Express,所以我认为必须是一些IIS设置,但我不知道在IIS中查找。任何人都可以指出我在哪里或在哪里寻找或了解问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

我仍然不知道导致问题的原因,但我能够通过在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');

 }