2012-08-12 87 views
2

我正在构建一个使用Rails 3.2.6的应用程序,我想创建一些功能,使页面的一部分能够在一段时间后自动重新加载自身。这是我做了什么:点击()不在轨道工作3.2.1 - 自动点击

  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. 然后,我创建了一个名为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文件应该将其加载到页面

回答

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); 
+0

那么为什么不选择使用* setInterval *就像这样:'setInterval(function(){$(“。auto_click”)。click();},1000)' – 2012-08-12 17:32:39

+0

@ChrisMoutray是的,在这种情况下它是一样的,但我希望稍微改变这个实现,以在请求完成后设置超时,而不是在发送请求之后。 – Dogbert 2012-08-12 17:34:52

+0

你的意思是使用* setInterval *作为编辑的一部分,否则它只会执行* tick *一次而不是每秒? – 2012-08-13 05:33:37

0

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