click()无法在rails 3.2.1中工作 - 自动点击

时间:2012-08-12 15:14:30

标签: javascript jquery click ruby-on-rails-3.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. 然后我创建了一个名为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();
    
  6. 但似乎点击甚至不起作用。当我加载页面时,部分保持不变,但是当我点击链接时我自己就可以了。

    注意:我还调用了application.html.erb文件中的auto_click.js文件,该文件应将其加载到页面

2 个答案:

答案 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。改变它解决了问题:)