2012-12-03 4 views
0

jquery 이벤트가 Popcorn.js JSON Parser를 통해 파싱 된 json 데이터와 함께 작동하지 않는 이유를 아는 사람이 있습니까?json의 jquery 이벤트가 팝콘을 통해 구문화 됨

링크를 클릭하면 함수를 호출하려고합니다. 문제의 링크는 json 파일에 있습니다. 파일이 예상대로 구문 분석되고 팝콘 각주가 예상대로 나타납니다. 구문 분석 된 링크를 따라갈 수는 있지만 이벤트가 발생하지 않습니다.

<script> 
$(function() { 

    var popcorn = Popcorn("#video"); 
    popcorn.parseJSON ("data/data.json"); 

    $("a[href='gohere.html']").click(function() { 
      alert("clicked!"); //should display the message, but doesn't   
    }); 
}); 
</script> 

그리고 JSON 파일은 다음과 같습니다 :

여기에 코드 조각은 내가 일하고 있어요입니다

{ 
"data": [ 
    { 
     "footnote": { 
      "start":"1", 
      "end":"3", 
      "target":"footnote-container", 
      "text":"<a href='gohere.html'>Go Here</a>" 
     } 
    }, 
    { 
     "footnote": { 
      "start":4, 
      "end":7, 
      "target":"footnote-container", 
      "text":"Another piece of text." 
     } 
    } 
    ] 
} 

난 정말 어떤 도움을 주셔서 감사합니다 것입니다!

답변

2

사용 위임. 이것은 이벤트 처리기를 해당 요소에 바인딩합니다. 이벤트 처리기는 지정된 선택기에서 거품을 내면서 이벤트를 수신합니다.

+0

+1 내 솔루션보다 좋습니다. – wanovak

+0

네, 정말 아름답게 작동합니다. 정말 고마워요! – stillenat

1

parseJSON 또는 ajax 파생 상품의 콜백 함수에서 jQuery .on()을 사용해보세요. .on()

$('body')on('click','a[href="gohere.html"]',function() { 
     alert("clicked!"); //should display the message, but doesn't   
}); 

정적이며, DOM 준비의 시간에 존재하는 가장 가까운 조상과 'body' (필요하지만 더 효율적이지) 교체와

$("a[href='gohere.html']").on('click', function() { 
     alert("clicked!");   
}); 
+0

아니요, 변경된 사항은 없습니다. 내 html에 링크를 넣을 때 광산과 방법 모두 작동합니다. 하지만 JSON 파싱을 통해 생성되는 경우는 아닙니다. – stillenat

+0

자, 문제는'parseJSON'이 비동기 적으로 실행된다는 것입니다. JSON 구문 분석을 통해 요소가 DOM에서 작성되기 전에 이벤트 핸들러를 첨부하는 코드가 실행 중입니다. 'parseJSON'에서 콜백을 수행하고'.on ('click') ... 코드를 거기에 넣을 수 있습니까? 그게 효과가있다. – wanovak

관련 문제