Jquery Rails:remote=>;是否对文档对象执行true操作?
我有以下Jquery Rails:remote=>;是否对文档对象执行true操作?,jquery,ruby-on-rails,Jquery,Ruby On Rails,我有以下index.js.erb: $(function () { var $team = $('#createTeam'), $user = $('#createUser'), $userPanel = $('.createUserPanel'), $teamPanel = $('.createTeamPanel'); $user.click(function(){ $userPanel.append('<%= j render 'f
index.js.erb
:
$(function () {
var $team = $('#createTeam'),
$user = $('#createUser'),
$userPanel = $('.createUserPanel'),
$teamPanel = $('.createTeamPanel');
$user.click(function(){
$userPanel.append('<%= j render 'form_user' %>').fadeIn('slow');
$(this).fadeOut();
});
$team.click(function(){
$teamPanel.append('<%= j render 'form_team' %>').fadeIn('slow');
$(this).fadeOut();
});
})();
<%= link_to "+", "#", 'data-action' =>"create",'data-target'=> "team", id: "createTeam", remote: true %>
<%= link_to "+", "#", 'data-action' =>"create",'data-target'=> "user", id: "createUser", remote: true %>
当我第一次点击任何一个链接时,什么都没有发生,但是在连续的第二次和第三次点击时,两个表单都会出现。每次单击链接后,按钮应淡出,表单应显示在单独的div中
所需的实现是当单击任一链接时,将出现
表单*
,按钮将淡出。如何实现这一点?因此,这里发生的事情如下所示:
单击向#索引控制器操作发送请求的链接之一。这将返回index.js.erb
第一次返回时,什么都没有发生,因为JS刚刚加载,所以就JS而言,什么都没有发生。您需要在index.js.erb
中添加一些内容,以便在最初加载js时调用append操作
对于同时出现的两种形式,您可能需要更具体地说明要附加到哪些内容。调用append时,您似乎选择了这两个类。也许您可以在问题中包含更多的
index.html.erb
。问题在于您正在调用javascript,然后加载javascript并将事件绑定到元素。这就是为什么第二次点击有效——点击事件在第一次点击后绑定,第一次点击“调用”要加载的javascript
看起来您不需要AJAX调用中的任何动态内容。您可以从link_to helper中删除“remote:true”选项,只需将index.js.erb的内容放在index.html.erb中(可能在底部或:script content块中)
我通常不会使用remote helper之类的东西,但是,把它想象成一个AJAX调用,你想请求一个动作,处理它,并返回一些关于发生了什么的信息谢谢你的洞察力,但是“添加一些东西”到什么?用户点击链接,表单就会呈现在页面上。您是否建议包装$foo.append();在类似$.ready这样的方法中,是否在click回调函数中?