第一次单击时不执行Jquery单击事件

时间:2013-03-21 06:54:26

标签: jquery ruby-on-rails

我不明白为什么我必须在JQuery中点击两次链接:

$(function(){
    $("#more_reviewers").click(function(){
        $("#reviewer_list").html("<%= escape_javascript(render 'restaurants/restaurant_reviewer_list', :venue => @restaurant, :limit => @restaurant.reviews.count) %>");
    });
});

当我点击时,视图会覆盖所显示的修订版的限制,并显示所有审阅者。我没有得到的是为什么我需要点击两次相同的按钮。类似问题的其他答案都没有对我有用,因为问题涉及cookie依赖,或者其他我不做的事情。

我刚刚测试了一件事:当我发出显示事件类型的警报时,它第一次没有显示任何内容(好像JS脚本没有绑定到链接),然后第二次警告正确的事件输入(“点击”)。

ID为“more_reviewers”的链接在rails中如下:

<%= link_to "more", "#", :id => "more_reviewers", :remote => true  %>

该链接显示正确的项目,但仅在点击两次后(第一次,页面上没有任何内容发生变化)

非常感谢帮助。

6 个答案:

答案 0 :(得分:4)

你的show.js.erb应该只包含:

$("#reviewer_list").html("<%= escape_javascript(render 'restaurants/restaurant_reviewer_list', :venue => @restaurant, :limit => @restaurant.reviews.count) %>");

现在,您将点击事件绑定到您已点击的链接,这意味着您必须再次点击它。

答案 1 :(得分:1)

刚出现这样的问题,您应该能够像这样解决它(这使您可以在同一个文件中而不是在application.js中执行其他js):

$(function(){
  $("#more_reviewers").bind('ajax:complete', function() {
    $("#reviewer_list").html("<%= escape_javascript(render 'restaurants/restaurant_reviewer_list', :venue => @restaurant, :limit => @restaurant.reviews.count) %>");
  });
});

答案 2 :(得分:0)

删除html代码中的'#'。将其替换为javascript:void(0);

<%= link_to "more", "javascript:void(0);", :id => "more_reviewers", :remote => true  %>

答案 3 :(得分:0)

这也可行。

$("#more_reviewers").click(function(e){
    e.preventDefault();
    #.....
});

答案 4 :(得分:0)

尝试:

<%= link_to "more", "", :id => "more_reviewers", :remote => true  %>

在我的情况下

<%= link_to "more", "#", :id => "more_reviewers", :remote => true  %>

也有效。

答案 5 :(得分:0)

在Java脚本中尝试包括:

<%= javascript_include_tag "jquery-1.8.3", "jquery.validate" %>

我认为这将解决您的问题,因为我使用此

获得了解决方案
相关问题