繁体   English   中英

在.js.erb文件中使用$(this) - Ruby on Rails AJAX

[英]Using $(this) in .js.erb file - Ruby on Rails AJAX

我正在使用Rails3与jQuery并尝试做简单的ajax调用。 我有一个链接,显示应用程序的当前状态(在线/离线)。 单击时,它将更新状态。

link_to app.status, { :controller => :apps, :action => :live_status, :id => app }, {:remote => true, :class => "#{app.status} status"}

live_status.js.erb:

$(this).fadeOut();
$(this).parent().html("<%= escape_javascript(status_link(@wowza_app)) %>");
$(this).fadeIn();

status_link将返回更新的link_to

但是$(这个)并不是我想象的那样。 如何使用新状态更新点击状态?

你应该给你想要更新ID的元素(我在最后添加了一个元素到哈希):

link_to app.status, { :controller => :apps, :action => :live_status, :id => app }, {:remote => true, :class => "#{app.status} status", :id => app.id}

现在,您可以使用相同的标识符来使用jQuery选择正确的元素:

$("#<%= @wowza_app.id %>").fadeOut();
$("#<%= @wowza_app.id %>").parent().html("<%= escape_javascript(status_link(@wowza_app)) %>");
$("#<%= @wowza_app.id %>").fadeIn();

当然,这假设@wowza_app有一个名为id的方法,它返回相同的链接ID,但您可以根据需要修改变量以选择具有正确ID的元素。

你应该使用选择器。 当您在ajax响应中解释了该代码时,jQuery不知道您指的是什么“this”。 更好地使用以下内容:

$('#my-special-div').fadeOut();
$('#my-special-div').parent().html("<%= escape_javascript(status_link(@wowza_app)) %>");
$('#my-special-div').fadeIn();
$('#my-special-div').hide(2000, function () {
    $(this).remove();  // here jQuery knows you are talking about 'my-special-div'
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM