2010-03-30 2 views
0

모달 창 안에 drag'n'drop 목록을 설정하고 싶습니다. 창 콘텐츠는 AJAX 호출을 통해로드되므로 jQuery의 .live() 메서드를 사용해야한다고 생각합니다.모달 창을 AJAX (jQuery)에서로드 할 때 바인딩 요소

$('#cboxLoadedContent').live('load', function() { 
    // Event for sortable page lists 
    $('ul#pageList').sortable(); 
}); 

가 어떻게 할 때 모달 창이로드 바인딩을 설정할 수 있습니다 : 여기

내 현재 코드인가? 모달 창은 colorbox 플러그인에서 가져옵니다.

참고 : alert()을 던집니다. 창이 뜨면 표시되지 않기 때문에 'load'이 올바른 이벤트가 아닐 것으로 생각됩니다.

답변

1

, 새로운 요소를 기다리거나 할 일을 ... DOM을 버블 링하는 요소의 이벤트를 수신 한 다음 일치하는 선택기가 있으면 이벤트 처리기를 실행합니다.

+0

아, Colorbox의 onComplete : 속성에 .sortable() 바인딩을 추가해야했습니다. 왜 .live()도 그 일을하지 않았는지에 대해 설명해 주셔서 감사합니다. 그게 많이 지워! –

0

어떤 모달 창을 사용하고 있는지에 따라 다릅니다.

jQuery UI dialog을 사용하는 경우 opendialog 이벤트를 사용할 수 있습니다.

따라서 대화 상자가 열릴 때 트리거되는 이벤트에 함수를 바인딩 할 수 있습니다. 당신이 jQuery를 UI를 사용하지 않는 경우

$(".selector").bind("dialogopen", function(event, ui) { 
    ... 
}); 

, 당신은 코드로 이동하여 팝업을 열 때 어떤 이벤트가 발생하면보고있다. 대한

$.ajax({ 
    url: 'page.html', 
    //stuff... 
    success: function(data) { 
    //Put stuff in DOM 
    $('ul#pageList').sortable(); 
    } 
}); 

이 (가) 부분 이유 : .live()이 방법을 작동하지 않습니다, 그것은 아무튼이 같은 아약스를 통해 그들을로드 할 때 단지 요소 .sortable() 전화 사용자의 경우

+0

아쉽게도 작동하지 않습니다. 내 Colorbox의 onComplete 속성에 바인딩을 추가해야했습니다. –

관련 문제