jQuery在表中找到最接近的值并滚动到它的行

时间:2017-05-15 13:09:04

标签: jquery filter html-table scrolltop

我有一个装有ajax的表:

   <div id="Dprg">
    <table>
        <tr><td ord="1">06:00</td><td>Event 1</td></tr>
        <tr><td ord="2">06:30</td><td>Event 2</td></tr>
        <tr><td ord="3">06:45</td><td>Event 3</td></tr>
        <tr><td ord="4">07:00</td><td>Event 4</td></tr>
        <tr><td ord="5">07:30</td><td>Event 5</td></tr>
        <tr><td ord="6">08:25</td><td>Event 6</td></tr>
        <tr><td ord="7">08:45</td><td>Event 7</td></tr>
        <tr><td ord="8">09:10</td><td>Event 8</td></tr>
                    ....etc...
        <tr><td ord="58">00:30</td><td>Event 58</td></tr>        
    </table>
  </div>

此表格以10%(窗口大小)高度div显示。我希望在这个div中加载一个表后滚动到实际的运行事件:获取实际时间并将其与第一个进行比较并滚动到它。 这是我的Jquery函数,用于在ajax文件加载后滚动,它对第一个加载的文件运行正常(甚至不准确)但是如果我将另一个程序加载到该div中..它滚动错误:

   function scrollinfo(){
    var dt = new Date();
    var time = dt.getHours() + ":" + (dt.getMinutes()<10?'0':'')+ dt.getMinutes();  
    $('#Dprg tr').each(function() {
    var myst = $(this).find("td").eq(0).html();   
    if (myst >= time){$('#Dprg').animate({scrollTop: $(this).offset().top-($('#Dprg').height()/2)}, 1000 );return false;}
    }); 
    }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

所以没有人回答,如果其他人在这里有类似的问题解决方案:用ajax加载数据后我必须重新滚动div到顶部(滚动到0)这将是第一步。比我必须更好地考虑时间(添加&#39; 0&#39;如果&lt; 10)几分钟和几小时。最后是第3列,它将保存每个事件的结束时间(3列表而不是2列)。那就是它! 这是最后的功能:

function scrollinfo(){
$('#Dprg').scrollTop(0); //very important 
var dt = new Date();
var time = (dt.getHours()<10?'0':'')+(dt.getHours()+ ":" + 
 (dt.getMinutes()<10?'0':'')+ dt.getMinutes();

$('Table tr').each(function() {
var beg = $(this).find("td").eq(0).html(); 
var fin = $(this).find("td").eq(2).html(); 
if (beg <=time && time <=fin){  
    $('#Dprg').animate({scrollTop: $(this).offset().top}, 1000 );
    return false;
    }       
    }); 
}

为了最终确定这个想法,我添加了一个onmouseleave =&#34; scrollinfo();&#34;在手动滚动之后,它再次返回到右侧(实际运行事件)..并且运行顺畅! 谢谢stackoverflow大家庭,并照顾所有:-)!。