2012-05-10 2 views
0

레일스에서 ​​jQuery를 처음 사용하면서 클릭 또는 호버 이벤트에서 div를 인식 할 수 없습니다. coffeescript도 사용하고 있지만 컴파일은 괜찮아 보입니다. div는 모두 Chrome 개발자 도구의 요소 창에서 잘 보이지만 콘솔 창에는 console.log가 표시되지 않습니다. 내 _form.html.haml의jquery in rails이 (가) 클릭 이벤트를 인식하지 못합니다.

부분

.field 
    = f.label :question 
    = f.text_field :question 
%p Click the plus sign to add answers. 
.field#answerone 
    = f.label :answers 
    = f.text_field :answers 
#plusanswer 
    = image_tag("plusWhite.png", :alt => "plus sign") 

.actions 
    = f.submit 'Save' 

커피 스크립트 :

$("#plusanswer").click -> 
    console.log("here we are") 
    $("#answerone").clone().appendto() 

컴파일 된 자바 스크립트 :

(function() { 

    $("#plusanswer").click(function() { 
    console.log("here we are"); 
    return $("#answerone").clone().appendto(); 
    }); 

}).call(this); 

내가 일을 엉망으로 IMAGE_TAG을하고 있어요 방법입니다 ?

+0

'$ (document) .ready()'핸들러에서 click 이벤트를 래핑하고 있습니까? CoffeeScript로 시작했을 때 언어의 차이는 나를 사용하는 것을 잊어 버렸습니다. –

+0

'appendto '란 무엇입니까? jQuery에는'appendTo'가 있지만 인수가 필요합니다. 그리고 당신은 잘못된 HTML을 제작할 것이라는 것을 알고 있습니까? HTML에'id'를 중복해서 사용할 수 없습니다. –

+0

세르지오, 당신 말이 맞았습니다. 댓글에 응답했기 때문에 클릭을 드릴 수 없습니다. – charliemagee

답변

3

저는 Sergio가 그의 의견에 맞다고 생각합니다. JS가 페이지의 마크 업보다 먼저 오는 경우 선택기 $(#plusanswer')이 해당 요소가 존재하기 전에 실행됩니다. 당신은이 문제를 해결하려면 코드

console.log $('#pluganswer').length 

으로이를 확인할 수,과 같이, jQuery의 문서 준비 래퍼의 코드를 포장이 조금 마법 보이지만, 여기가 작동하는 방법

$ -> 
    # the rest of your code goes here 

: 때 함수를 $의 jQuery 객체에 전달하면 document의 "준비 됨"이벤트가 발생한 후에 만 ​​해당 함수가 실행됩니다. 다시 말하지만 코드가 마크 업 앞에 있다고 가정하면이 동작을 얻어야합니다.

console.log $('#pluganswer').length # 0 
$ -> 
    console.log $('#pluganswer').length # 1, because the page's markup is loaded 
+0

Trevor에게 감사드립니다. 이봐, 나는 너의 커피 필기 책을 가지고있어. 불행히도 중급에서 고급 자바 스크립트 코더에 더 적합합니다. 나는 초보자이며 시작한 직후에 Coffeescript를 발견했습니다. 나는 틀린 때문에 일정한 과실에서 갔다; 및} 및) "구두점"에 대한 오류가 거의 없습니다. 이제 Javascript에서 모든 초보자 오류가 발생합니다. . . 그리고 이제 햄, 루비 등. – charliemagee

+0

글쎄, 책을 사 주셔서 감사합니다! CoffeeScript를 배우기 전에 JS의 기초를 배우는 것이 좋습니다. 훌륭한 리소스는 [CodeSchool] (http://www.codeschool.com/)의 대화 형 jQuery Air 강좌입니다. –

관련 문제