我不明白为什么我必须在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 %>
该链接显示正确的项目,但仅在点击两次后(第一次,页面上没有任何内容发生变化)
非常感谢帮助。
答案 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" %>
我认为这将解决您的问题,因为我使用此
获得了解决方案