2011-09-05 6 views
1

메신저 새롭다 Javascript와 Rails 3.1. 그래서 지금은 레일 응용 프로그램까지 싶게 runnig와 내가 whant 일을 가지고 있지만 : 나는 내가이 태그를 포함 jave jQuery를/커피 스크립트rail3.1 javascript coffecsript newbie 질문

로 (등등 좋은 드롭 다운 메뉴 추천하고) 어떤 아이 캔디를 추가하고 싶었, 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 본문이 전혀 없습니다. highlight_h1 호출과 마찬가지로 코드를 함수로 jQuery 객체에 전달하면 (나머지 코드는 제외하고) 전체 문서가 준비된 후에 만 ​​실행할 수 있습니다.

$ -> 
    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). 초보자를 대상으로하며 이런 종류의 문제를 더 잘 이해하는 데 도움이됩니다.

+0

덕분에 도움이 ... 내게 부끄러운 줄 알았어 마지막 달 Python 프로그래밍했다 .... 어떤 의도에 대해 까다 롭습니다 –

관련 문제