【问题标题】:$(document).ready in Ruby partial view$(document).ready 在 Ruby 局部视图中
【发布时间】:2009-06-19 14:41:24
【问题描述】:

希望这个例子能比简单地解释它更好地说明我的观点:

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

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

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

有没有简单的方法来做到这一点?我只是错过了一些明显的东西吗?

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

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

$(".colorbox").colorbox({}, function(){
  $(".description").watermark("Description"); //Changed to a class
});

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

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

    【讨论】:

    • 那行得通。我更新了问题以包含更新的代码。
    【解决方案2】:

    从 ajax 直接调用,不用包裹在$(document).ready()

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

    【讨论】:

    • 更新了我的问题来解决这个问题。不过,我想我明白你的意思了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多