2

我正在使用 Rails 3.2.6 构建一个应用程序,并且我想创建一个功能,该功能可以在一段时间间隔后自动重新加载页面的一部分。这就是我所做的:

  1. 我创建了一个名为 _hottest_beep 的部分,重新​​加载的内容应该是

  2. 我像这样在主页中调用了部分

    <div class="update_beep">
    <%=render :partial=>"hottest_beeps"%>
    </div>
    
  3. 我创建了一个 main.js.erb 文件

    $(".update_beep").html("<%= escape_javascript(render("hottest_beeps"))%>")
    
  4. 我在主页上添加了一个链接,当单击该链接时,部分会自动重新加载

    <span ><%=link_to'View',{:controller=>'users',:action=>'main'},:remote=>true,:class=>'auto_click'%>
    </span>
    
    <div class="update_beep">
    <%=render :partial=>"hottest_beeps"%>
    </div>
    
  5. 然后我创建了一个名为的 JavaScript 文件auto_click,它将每 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 文件,该文件应该将其加载到页面

4

2 回答 2

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);
于 2012-08-12T17:24:10.233 回答
0

谢谢大家的帮助。但经过几个小时的工作,我最终解决了它。问题是我的 jquery 文件有一个错误。改变它解决了问题:)

于 2012-08-14T19:48:58.443 回答