【问题标题】:Using a javascript variable in escape_javascript在 escape_javascript 中使用 javascript 变量
【发布时间】:2013-01-13 21:36:39
【问题描述】:

我一直在尝试使以下工作:我希望 jQuery 函数在单击具有 ID 的某个 div 时加载特定的部分。我希望这个 ID 成为我与部分一起使用的 :locals 的一部分。

$("#main>.dots").live("mousedown", function(e) {
        $num = 8;
        $("#main").append("<%= escape_javascript(render :partial => 'projects/show',     :locals => {:i => "#{$num}"}).html_safe %>")
    })

到目前为止,我还没有把它弄好。上面的代码返回“为 nil 调用的 id”,因此 $num 没有正确地提供给 escape_javascript 函数。当我用整数 8 替换 $num 时,它可以工作(在 标签之间)。

有什么解决办法吗?

语法:

$("#main").append("<%= escape_javascript(render :partial => 'projects/show', :locals => {:i => 8}).html_safe %>")

工作,所以这就是我想走的路,除了 8 是 jQuery ofcourse

【问题讨论】:

  • .live() 已贬值(而且速度非常慢)
  • 感谢回复,我将用 'on()' 替换它们 :) (忘记它已被弃用)
  • 您使用 mousedown 而不是 click 是否有特定原因?
  • 我现在不能将其更改为“点击”,但我的部分代码现在似乎不起作用。它必须全部包含在 '$(function() { //code }' 中对吗?
  • 我相信我已经找到了答案:jquery 只能在类名已经存在时分配事件,而且我的很多功能都针对尚未加载到页面上的 HTML。我恢复到 .live() ,因为这似乎效果最好。

标签: jquery ruby-on-rails escaping string-interpolation


【解决方案1】:

我已经解决了这个问题

var dataString = "projectid=" + $(this).attr("id") + "&left=" + $(this).css("left") + '&top=' + $(this).css("top");
    $.ajax({
        url: "/projects/show",
        type: "get",
        data: dataString,
        success: function(data) {
            $("#main").append(data)
        }
    });

所以基本上我使用了 AJAX,所以我可以将 POST 数据发送到正确的控制器操作:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2011-03-19
    • 2013-06-29
    • 2015-04-21
    • 2018-02-06
    • 2021-08-28
    相关资源
    最近更新 更多