我正在使用Rails 3.2.6构建一个应用程序,我想创建一些功能,使一部分页面在一段时间间隔后自动重新加载。这就是我所做的:
我创建了一个名为_hottest_beep的部分,其中重新加载的内容应为
我在主页中调用了部分,如此
<div class="update_beep">
<%=render :partial=>"hottest_beeps"%>
</div>
我创建了一个main.js.erb文件
$(".update_beep").html("<%= escape_javascript(render("hottest_beeps"))%>")
我在主页面上添加了一个链接,当点击该链接时,部分会自动重新加载
<span ><%=link_to'View',{:controller=>'users',:action=>'main'},:remote=>true,:class=>'auto_click'%>
</span>
<div class="update_beep">
<%=render :partial=>"hottest_beeps"%>
</div>
然后我创建了一个名为auto_click
的JavaScript文件,它会每隔1秒自动点击一次
var fsecs = 1000;
function feedTimer1()
{
if (fsecs == 0)
{
$('.auto_click').click();
fsecs =1000;
self.status = fsecs
ftimerRunning = true
ftimerID = self.setTimeout("feedTimer1()")
}
else
{
self.status = fsecs
fsecs = fsecs - 1
ftimerRunning = true
ftimerID = self.setTimeout("feedTimer1()")
}
}
window.onload = feedTimer1();
但似乎点击甚至不起作用。当我加载页面时,部分保持不变,但是当我点击链接时我自己就可以了。
注意:我还调用了application.html.erb文件中的auto_click.js文件,该文件应将其加载到页面
答案 0 :(得分:1)
我不确定我是否理解你的js,但这应该有效:
$(function() {
function tick() {
$(".auto_click").click();
setTimeout(tick, 1000);
}
tick();
};
在旁注中,您不应该在函数中执行setTimeout,因为将最终打桩请求。如果您需要此代码,请告诉我。
编辑:为此,你可以使用:
$(function() {
window.auto_click_tick = function() {
$(".auto_click").click();
}
window.auto_click_tick();
};
并在您的js.erb文件中添加此
setTimeout(window.auto_click_tick, 1000);
答案 1 :(得分:0)
谢谢大家的帮助。但经过几个小时的工作,我终于解决了它。问题是我的jquery文件有一个bug。改变它解决了问题:)