$(document).ready在Ruby局部视图中

时间:2009-06-19 14:41:25

标签: jquery ruby-on-rails

希望这个例子能说明我的观点,而不仅仅是试图解释它:

我正在使用众多jQuery水印插件之一。要将水印附加到文本框,语法为:

$(document).ready(function(){
  $("#item_description").watermark("Description");
});

如果我的页面已经包含一个id = item_description的文本框,那么这非常有用。但是,如果我尝试通过在单击按钮上加载包含该文本框的部分视图来执行任何ajaxy类型的操作,则已调用$(document).ready()并且未应用水印。我尝试在局部视图中放置一个单独的$(document).ready(),但它看起来像rails(?)在呈现页面时剥离任何<script>块,这意味着它仍然永远不会被调用。

有一种简单的方法吗?我只是遗漏了一些明显的东西吗?

修改:我正在使用jQuery Colorbox插件加载灯箱内的部分视图(通过$(.colorbox).colorbox();) - 我实际上并没有阿贾克斯请求自己。如果我到目前为止理解答案,最好的方法可能是使用插件的回调功能来执行部分内部所需的任何javascript。

工作示例:根据反馈,我只需将colorbox调用更改为:

就可以使用colorbox实现此功能
$(".colorbox").colorbox({}, function(){
  $(".description").watermark("Description"); //Changed to a class
});

2 个答案:

答案 0 :(得分:2)

为什么必须在$(document).ready?您已经有javascript加载ajax,因此您可以在回调上激活$("#item_description").watermark("Description");

答案 1 :(得分:1)

从ajax中直接拨打电话,而不将其包含在$(document).ready()

$("#item_description").watermark("Description");