我正在使用 Rails 3.2.6 构建一个应用程序,我想创建使页面的一部分在一段时间后自动重新加载的功能。这是我所做的:
-
我创建了一个名为 _hottest_beep 的部分,重新加载的内容应该在其中
-
我在主页
上这样称呼部分<div class="update_beep"> <%=render :partial=>"hottest_beeps"%> </div>
-
我创建了一个主.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文件,该文件应将其加载到页面
我不确定我是否理解你的 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);
谢谢大家的帮助。但经过几个小时的工作,我最终解决了它。问题是我的jquery文件有一个错误。改变它解决了:)的问题