2012-08-12 85 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文件有一個錯誤。改變它解決了這個問題:)