2013-03-12 2 views
0

이벤트를 팝업 창에 바인딩 할 수없는 것 같습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 이벤트 바인딩을 원하는 창을 전달해야한다는 것을 알고 있지만 여기에 대한 정보를 찾을 수없는 것 같습니다. - 지난 1 시간 동안의 정보를 검색했지만 아직 가지고 있지 않습니다. 내 노력을 보여주는 단일 링크. 몇 가지 다양한 시도가 있습니다.이벤트를 팝업 창에 바인딩하려면 어떻게합니까?

// the popup window is referenced by "display.window" 
// #map is a <canvas> element occupying 100% of the new window 

// I'll just try passing in the context first... 
$(display.window, "#map").keydown(function(e) { 
    // do stuff 
}); 

// maybe the other way around? 
$("#map", display.window).keydown(function(e) { 
    // do stuff 
}); 

// what if I just try to add the event right to the window? 
$(display.window).keydown(function(e) { 
    // do stuff 
}); 

// nope, maybe bind will do the trick 
$(display.window).bind(function(e) { 
    // do stuff 
}); 

// maybe the new window's DOM isn't loaded yet? 
$(display.window).ready(function() { 
    $(this).keypress(function(e) { 
     // do stuff 
    }); 
}); 

이 중 아무 것도 작동하지 않았습니다. 내가 뭘 놓치고 있니?

+0

작품 (팝업 차단기를 조심) – bfavaretto

답변

3

나는 당신이 팝업을 만들기 위해 사용하고있는 코드 안에서 이것을 할 필요가 있다고 생각한다. 코드의 그 부분을 보는 것이 좋을 것이다.

또한 이벤트 구독을 위해 현재 권장되는 방법은 .on() jQuery 메서드를 사용하는 것입니다.

$(display.window).on('keydown', function(e) { 
    //Good stuff here 
}); 

완전히 검증되지 않은

http://api.jquery.com/on/

이 올바른 경로 아래로 당신을 도움이되기를 바랍니다.


나에게 발생한 또 다른 문제는 정말 팝업이 필요합니까? 팝업 차단기 등으로 인해 문제가 생길 수 있습니다. 좋은 모달 창 솔루션을 구현하는 것이 더 나을 수도 있습니다. 그러면 "창"이 동일한 DOM의 일부가되어 이벤트 수신기를 사소하게 만들 수 있습니다.

jQuery를 UI는`CSTE 연구진()`와를 사용하여 좋은 "대화"위젯 나를 http://jsfiddle.net/zWJ5d/에 대한

http://jqueryui.com/dialog/

+0

를 (이 부수적으로) jQuery의 최신 버전으로 업그레이드하는 것이 트릭을 만들었습니다. 감사! (나는 이것이 빡빡한 일정에있어 정말 도움이된다.) 1 분 안에 받아 들일 것입니다. –

관련 문제