0

我有一个观点,比如 show.js.erb。我在另一个视图中有一个链接,这样

link_to "MyLink", my_object_path, :remote => true

成功返回 show.js.erb 视图。我的问题是,从那个角度来看,有没有办法访问触发 AJAX 调用的元素,而不必求助于生成特定于单个元素的 id ...

我希望能够使用此视图回调在单击的任何元素旁边打开一个小对话框,但我似乎找不到访问触发元素的方法。

我尝试使用 $(this) 但这不起作用。

我想做一些类似的事情

$(this).after("some new html here");
4

1 回答 1

3

我的解决方案是将预提交类绑定到元素,在我的例子中是一个弹出模式窗口。这是与上面链接的帖子类似的解决方案,因为它使用预提交绑定,但改为使用类。

在 public/javascripts/application.rb 中:

jQuery(function($) { 
  $(".poppable").bind("ajax:loading", function() { $(this).addClass("popped"); });
});

然后在我看来弹出内容(例如app/views/mymodel/popup.js.erb):

var p = $(".poppable.popped");
p.removeClass("popped");
/* Do what I need to with p ... */

如果这看起来不合理,我会全力以赴,但它现在有效。

于 2011-01-28T02:29:44.090 回答