2012-10-25 3 views
1

jQuery 대화 상자가 있고 open 콜백을 사용하여 AJAX를 통해 데이터를로드합니다. 예를 들어jQuery UI 대화 상자에서 프로그래밍 방식으로 이벤트 트리거

:

$('#dialog').dialog({ 
    modal: true, 
    autoOpen: false, 
    open: function(){ 
     $('.content', this).load('/path/to/file', function(){ 
      // even more code 
     }); 
     // more code 
    } 
}); 

대화 상자가 이미 열려있는 동안, 내가 AJAX를 통해 데이터를 다시로드 할. 나는 내가 위에 묶인 open 함수를 방아쇠를 당길 수있을 것이라고 생각했다. 나는 $(".selector").bind("dialogopen", function(event, ui){})을 사용하여 그 open 이벤트에 바인딩 할 수 있다는 것을 the docs에서 읽었습니다. 그래서 나는 그 방법으로도 이벤트를 트리거 할 수 있다고 생각했습니다.

나는 $('#dialog').trigger('dialogopen')을 시도했지만 아무 일도 없었습니다. jQuery 대화 상자의 open 이벤트를 어떻게 트리거 할 수 있습니까?

현재 나는 $('#dialog').dialog('option', 'open')()을 사용할 수 있다고 생각했지만,보기 흉한 것은 더 좋은 방법입니다.

답변

1

오픈 이벤트에서 함수를 추출한 다음 원하는 위치에서 다시 사용하지 않는 이유는 무엇입니까?

$('#dialog').dialog({ 
    modal: true, 
    autoOpen: false, 
    open: function(){ 
     loadfunction() 
    } 
}); 

function loadfunction(){ 
    $('.content').load('/path/to/file', function(){ 
      // even more code 
     }); 
     // more code 
} 

그래서 어디서나 loadfunction을 사용할 수 있습니다.

+1

그것은 좋은 생각이다. 확실히 $ ('# dialog') 대화 상자 ('option', 'open')()'보다 명확합니다. –

+1

mm 좋은 하나 .. 만약 당신이 대화 상자가 열려있는 동안 여분의 코드를 가지고 있지 않다면 나는 단순히 'open : loadfunction'을 넣을 것입니다. –

3

당신은 당신이 아니라 같은 $('#dialog').dialog('option')['open']() (추한 다시) 무엇을 다시 작성할 수 있습니다로 아름답게 할 수

,

var $dOpt = $('#dialog').dialog('option'); 

다음

$dOpt.open(); 

DEMO :http://jsfiddle.net/bj4hK/2/


난 당신이 닫고 다시하는 것입니다 $('#dialog').dialog('open')http://jsfiddle.net/bj4hK/

다른 더러운 속임수를 찾고 있습니다 생각합니다. $('#dialog').dialog('close').dialog('open') < - 그러나 코드가 있으면 코드가 엉망이됩니다. onclose

+2

대화 상자가 이미 열려 있으면 작동하지 않는 것 같습니다. 그게 내가 원하는거야. http://jsfiddle.net/NTICompass/bj4hK/1/ –

+0

흠,'$ ('# dialog') dialog ('option')'이 객체를 반환했습니다. –

+1

@RocketHazmat 나도 .. 그걸 찾아 내기 위해 코드를 디버그해야 했어. –

0

jQuery UI에서 위젯 이름을 호출하고 메소드 이름을 인수로 제공하여 메소드가 호출됩니다. 그럼 당신은 할 수있다 :

$('#dialog').dialog("open"); 
+2

대화 상자가 이미 열려 있으면 작동하지 않는 것 같습니다. 그게 내가 원하는거야. http://jsfiddle.net/NTICompass/bj4hK/1/ –

+0

대화 상자가 이미 열려있는 경우에는 대화 상자가 열렸을 때 수행했을 것입니다. 대화 상자가 이미 열려 있는지 여부에 관계없이 어떤 작업을 수행하려면이 작업을 수행하고'를 호출하는 함수를 작성하십시오.대화 상자 ("열기"). – Barmar

+0

내가하고 싶은 것은 대화 상자가 열려있는 상태에서 AJAX 데이터를 다시로드 할 수 있도록'open' 함수를 트리거하는 것입니다. –

관련 문제