【问题标题】:jQuery html() and new line charactersjQuery html() 和换行符
【发布时间】:2009-07-01 21:03:13
【问题描述】:

我正在使用带有 rails 的 jQuery 并且有以下代码

$('#related').html("<%= render :partial => "related_items" %>");

我在浏览器中遇到问题,其中 #related 元素的内容仅在部分中没有换行符时才被替换。

这没什么大不了的,我可以将所有内容放在一行中,但这会使代码难以阅读。

有没有办法避免在 jQuery html() 属性中省略换行符?

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

    这里发生的是 &lt;%%&gt; 之间的代码首先由 Rails 解释,并且该解释的输出被发送到浏览器。所以发送到浏览器的是:

    $('#related').html("Some text with a
    line break in it");
    

    这不是有效的 javascript,因为 javascript 不允许多行双引号字符串。您需要转义字符串中的换行符,以便在将它们打印到浏览器时,结果是有效的 javascript 语句。

    【讨论】:

    • 没有意识到这是无效的 javascript。这就说得通了。我会在红宝石方面逃脱它。
    【解决方案2】:

    为了完整起见,这就是我为使事情顺利进行所做的工作。

    $('#related').html("<%= escape_javascript(render :partial => "related_items") %>");
    

    【讨论】:

      【解决方案3】:

      ...等等,那段代码难道不应该在运行 javascript 之前就被处理吗?或者您是否出于教育原因尝试以纯文本形式打印代码?

      【讨论】:

      • 对不起,我应该解释一下的。这是一个 js.erb 文件,因此 ruby​​ 端在发送到浏览器之前执行。
      猜你喜欢
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 2011-01-07
      • 2014-10-31
      • 2010-12-05
      • 1970-01-01
      相关资源
      最近更新 更多