【问题标题】:rail3.1 javascript coffecsript newbie questionrail3.1 javascript coffecsript 新手问题
【发布时间】:2011-11-10 15:58:51
【问题描述】:

我对 Javascript 和 Rails 3.1 相当陌生。 所以我现在有一个 Rails 应用程序启动和运行并做我想做的事,但是: 我想用 Jquery/Coffescript 添加一些 Eye Candy(比如漂亮的下拉菜单等)

我使用了 include 标签,application.js 包含我自己编写的方法/函数。但是我遇到了一些不需要的行为: id 向 pages.js.coffee 添加了一个 alert(),我希望我只会在从 pages_controller 调用某些内容时执行,但它会在每个页面上调用。这是为什么? 其次,我添加了一个小测试函数来为<h1> 标签着色,如下所示:

app/assets/javascript/pages.coffee.js:

highlight_h1 = (color) ->
    $('h1').css('background',color)
#change colour on page load
$ -> highlight_h1 "red"
#add some click action for fun
$('#ccolor').click ->
    highlight_h1 "blue"

$('button').click ->
    highlight_h1 "yellow"

现在<h1> 在页面加载时获得红色背景。但我的任何点击操作似乎都不起作用。 我错过了什么? 这是渲染的html:

<h1 id="ccolor" style="background-image: initial; background-attachment: initial;  background-origin: initial; background-clip: initial; background-color: red; background-position: initial initial; background-repeat: initial initial; ">Home</h1>
<p>Here Should be a Login Page an Stuff</p>
<button>make me yellow</button>
<a href="/users/sign_up" class="signup_button_round">Sign up now!</a>

有什么提示吗?

【问题讨论】:

    标签: jquery ruby-on-rails-3.1 coffeescript


    【解决方案1】:

    问题一:

    id 向 pages.js.coffee 添加了一个 alert(),我希望我只会在从 pages_controller 调用某些内容时执行,但它会在每个页面上调用。这是为什么?

    资产管道的工作方式(默认情况下),您的所有 JS 都被聚合到一个用于生产的缩小文件中。在开发模式下,将提供原始文件,但它们仍然在每个页面上。您必须使特定于页面的代码以某些东西为条件,例如特定元素的存在:

    if $('#myPageElement').length > 0
      ...
    

    问题 2:

    现在在页面加载时获得红色背景。但我的任何点击操作似乎都不起作用。

    您的&lt;script&gt; 标签位于&lt;body&gt; 之前,因此您的脚本会立即运行。当它出现时,还没有#ccolor 元素,或者任何button——根本就没有HTML 正文。你可以通过将代码作为函数传递给 jQuery 对象来解决这个问题——就像你对 highlight_h1 调用所做的那样,而不是你的其余代码——只有在整个文档准备好后才运行:

    $ -> 
      highlight_h1 "red"
    
      #add some click action for fun
      $('#ccolor').click ->
          highlight_h1 "blue"
    
      $('button').click ->
          highlight_h1 "yellow"
    

    套用 Homer Simpson 的话说:“缩进!生活中所有问题的原因和解决方案。”

    插件:我的书中有一章是关于 jQuery 的,CoffeeScript: Accelerated JavaScript Development。它面向初学者,应该可以帮助您更好地理解这类问题。

    【讨论】:

    • 谢谢你的帮助......我感到羞耻,我在过去几个月里正在编程 python......这对意图很挑剔
    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2012-07-16
    • 2010-12-08
    • 2011-08-13
    • 2010-12-20
    • 2010-11-05
    相关资源
    最近更新 更多