2

我不明白为什么我必须在 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  %>

该链接显示正确的项目,但仅在单击两次后(第一次,页面上似乎没有任何变化)

帮助将不胜感激。

4

6 回答 6

4

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

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

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

于 2013-03-21T08:08:14.653 回答
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) %>");
  });
});
于 2014-01-26T14:38:20.923 回答
0

尝试:

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

就我而言

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

也可以。

于 2013-03-21T07:58:29.387 回答
0

在您的 Java 脚本中尝试包括以下内容:

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

我认为这将解决您的问题,因为我得到了使用它的解决方案

于 2013-03-26T12:52:16.650 回答
0

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

<%= link_to "more", "javascript:void(0);", :id => "more_reviewers", :remote => true  %>
于 2013-03-21T07:08:06.327 回答
0

这也将起作用。

$("#more_reviewers").click(function(e){
    e.preventDefault();
    #.....
});
于 2013-03-21T07:11:13.703 回答