2011-09-05 40 views
1

即時通訊相當新到Javascript和Rails 3.1。 所以我現在有一個Rails應用程序了UND運行過程中出現,做什麼我whant,但: 我想補充一些眼睛糖果(如漂亮的下拉菜單等)使用jQuery/Coffescriptrail3.1 javascript coffecsript新手問題

我JAVE了包括標籤,和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="https://stackoverflow.com/users/sign_up" class="signup_button_round">Sign up now!</a> 

任何提示?

回答

0

問題1:

ID添加警告()來pages.js.coffee,我希望呼籲從pages_controller的東西時,我只會被執行,但它被調用每一頁上。這是爲什麼?

資產管道的工作方式(默認情況下),所有的JS都彙總到一個單一的縮小文件中進行生產。在開發模式中,原始文件將被提供,但它們仍然在每個頁面上。你必須根據某些事情制定頁面特定的代碼,例如特定元素的存在:

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

問題2:

現在得到頁面加載紅色背景。但是,我的點擊行爲似乎沒有任何工作。

您的<script>標籤出現在<body>之前,因此您的腳本立即運行。當它這樣做時,還沒有#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" 

解釋荷馬辛普森:「爲了縮進!所有生活問題的原因和解決方案。」

插件:在我的書中有關於jQuery的一章,CoffeeScript: Accelerated JavaScript Development。它針對初學者,應該幫助你更好地理解這些問題。

+0

謝謝,幫助...恥辱我我編程python最後幾個月....這是該死的挑剔關於intendation –