2012-02-12 3 views
3

와일드 카드 선택기에서 이벤트가 잘 발생하지만 선택기에 특정 ID를 사용하면 이벤트가 실패합니다.간단한 CoffeeScript 및 jQuery 이벤트의 이상한 문제

$("*").click -> 
    console.log "entered event." 
    $("#tellafriend").dialog 
    modal: true 
    buttons: 
     Ok: -> 
     $(this).dialog "close" 

을하지만, 이것은하지 않습니다 :

이 작동

$("#tell-a-friend").click -> 
    console.log "entered event." 
    $("#tellafriend").dialog 
    modal: true 
    buttons: 
     Ok: -> 
     $(this).dialog "close" 

그리고 내 관련 HTML :

<ul class="actions"> 
    <li><a href="#">Home</a></li> 
    <li>|</li> 
    <li><a href="#" id="tell-a-friend">Tell a Friend</a></li> 
</ul> 

것은 내가이 작업을 수행하려면 커피 스크립트에서 뭔가 빠진 건가요 ? jQuery 선택기가 CoffeeScript에서 다르게 형식화되어있을 수 있습니까?

이 내 응용 프로그램이 제공하는 렌더링 자바 스크립트 (페이지를 제공 할 때 레일이 JS에 커피 스크립트로 변환) :

(function() { 

    $("#tell-a-friend").click(function() { 
    console.log("works"); 
    return $("#tellafriend").dialog({ 
     modal: true, 
     buttons: { 
     Ok: function() { 
      return $(this).dialog("close"); 
     } 
     } 
    }); 
    }); 

}).call(this); 
+3

오, 당신은 농담을하고 있습니다. 나는 $ (document) .ready() 비트를 잊어 버렸습니다. 테스트. 편집 : 예, 그게 문제가되었습니다. 내 마음이 두터운 뇌간. 이것은 항상 새로운 영역에있을 때 발생합니다 (coffeescript) 나는 기본을 잊어 버립니다. –

답변

2

는 DOM이 완전히로드되기 전에 코드가 실행되는 것이 가능하다. DOM이 완전히로드 된 후 모든 클릭 핸들러가 적용되도록 문서 준비 핸들러에서 래핑 해보십시오. 그것은 body 요소에서만 실행될 수 있습니다. 왜냐하면 이것이 스크립트가 실행될 때 사용 가능한 유일한 요소이기 때문입니다.

관련 문제