2012-11-21 2 views
0

index.php를jQuery UI : 다른 대화 상자에서 열었던 대화 상자를 열거 나 닫는 방법? 당신이 볼 수 있듯이

// load jquery.js and jquery.ui.js 
$("#dialog_a").load("template_a.php").dialog(); 
$("#dialog_b").load("template_b.php").dialog(); 

template_a.php

just HTML, no JS 

template_b.php

// !!! -> load jquery.js and jquery.ui.js <- !!! 
$("#dialog").load("template_c.php").dialog({modal:true}); 

, 나는이 대화 상자를로드합니다. #dialog_a는 함수없이 텍스트 만로드하지만 #dialog_b는 jquery와 jquery.ui가 포함 된 독립 실행 형 스크립트를 다시로드합니다.

#dialog_b를 (앵커/onclick으로) 열면 index.php의 개체에 액세스 할 수 없습니다 (예 : 대화 상자 닫기). 나를 위해 template_b.php DOM을 덮어 쓰는 것 같습니다. 하지만이 문제를 해결하는 방법을 모르겠습니다. 있니?

미리 감사드립니다.

+1

기본 페이지에 이미 jQuery 및 jQueryUI가있는 경우 다시로드하지 마십시오. 그것을 밖으로 가져 가십시오 template_b.php –

+0

@adamb : 무엇을 의미합니까? –

+0

@adamb Google에 가야했지만 지금은이 커뮤니티의 작동 방식을 알고 있습니다. 조언 해 주셔서 감사합니다! –

답변

0

해결책 : jQuery live() function!

index.php를

$(".anchor_in_dialog_or_not_doesnt_matter").live("click", function() { 
    $("#dialog").dialog(); 
}); 

template_b.php

if ($_GET["standalone"]) 
    // load jquery, jquery.ui 
endif; 

I 희망은 누군가를하는 데 도움이!

편집 : 이미 언급 한 adamb는 이미 live() 대신 on()을 사용합니다!

+1

.live()가 지원되지 않습니다. 대신 .on()을 사용하십시오. [jQuery Docs에서 live()를 on()으로 변환하는 방법] (http://api.jquery.com/live/) – adamb

+0

@adamb 귀하의 조언에 감사드립니다! –

관련 문제