2011-07-31 6 views
0

Prototype Draggable 창에 문제가 있습니다. 저는 창문이있어서 창안에 일부 jQuery/Ajax/JavaScript 함수를 시작하려고하지만 아무것도 작동하지 않는 것 같습니다.프로토 타입 내부에서 JS/JQuery 실행하기

간단한 자바 스크립트 팝업 스크립트로 만든 예를보고 div를 클릭하면 표시되지 않습니다. 모든 기능은 동일합니다.

jQuery의 경우 이미 noconflict()을 시도했지만 여전히 작동하지 않습니다.

편집 :

function openApps() { 
    new UI.Window({theme: "ultra_dark", 
      width: 1170, 
       height: 630, 
       superflousEffects: superflousEffects}).center().show().setAjaxContent('myFile.php', { 
    method: "GET", 
    onCreate: function() { 
    this.header.update("Applications"); 
     this.setContent('<div class="message">Please wait...</div><div class="spinner"></div>'); 
    } 
    }); 
    } 
+1

이 예제에서 jquery는 어디에서 사용 했습니까? – ShankarSangoli

+0

이 하나는 자바 스크립트 예제지만 jquery 너무 작동하지 않습니다. (단순한 JS가 작동하지 않는다면 jQuery는 어떻게 될 것입니까?) – Ricardo

+0

어떻게 윈도우의 내용을 설정하고 있습니까? – clockworkgeek

답변

1

시도 AJAX에 의해 귀하의 스크립트는 context of a callback에서 실행되고 있습니다. . 함수 show_confirm은 아마도 onComplete 내의 클로저가됩니다. 쓸 필요가없는 것이 자동입니다.

명시 적으로 전역 변수에 할당해야 할 수도 있습니다.

window.show_confirm = function() { 
    var r = confirm("Press a button!"); 
    if (r == true) { 
     alert("You pressed OK!"); 
    } else { 
     alert("You pressed Cancel!"); 
    } 
} 

또는 당신이 검색 <script> 요소가 전혀 실행되지 않는 검색 한 경우 대신 setUrl('myFile.php')으로 setAjaxContent('myFile.php', ...)를 대체하여 iframe을 사용할 수 있습니다 (I이 일부 도메인 문제로 일어날 수 있다고 생각합니다). 로딩 스피너를 갖는 방법을 알지 못하기 때문에 이것은 타협점입니다.

+0

방금 ​​작성한 작품 - 완벽하게 작동합니다! 그래서 기본적으로 모든 jQuery/JS 스크립트에 대해 동일한 작업을 수행해야 할 필요가 있습니다. 그런데 로딩 스피너 브로를 실제로 필요로하지 않는 방식으로 iframe 옵션은 나에게 좋지 않습니다. 왜냐하면 내가 열리는 새 창은 모두 내가하고 싶은 것이 아닌이 안에 있기 때문입니다. – Ricardo

+0

다른 방법은 AJAX 응답을 실행하지 않고 필요한 모든 스크립트를 주 문서에 포함시키는 것입니다. 그렇게하면 범위 문제가 없습니다. – clockworkgeek

1

jQuery's UI를 사용 여기 내가 창을 설정하는 방법입니까? 충돌을 막기 위해 dialogue windows이 내장되어 있습니다. 여기

은 당신의 맥락에서 그 사용의 예 :

<script> 
$(function() { 
    $("a[id=delete-item]").click(function(){ 
     $("div[id=dialog-confirm-delete]").dialog({ 
      modal: true, 
      buttons: { 
       "Delete item": function() { 
        $(this).dialog("close"); 
       }, 
       Cancel: function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 
}); 
</script> 
<style> 
    div[id=dialog-confirm-delete] { 
     display: none; 
    } 
</style> 
<div id="dialog-confirm-delete"> 
    <p> 
     This item will be permanently deleted and cannot be recovered. Are you sure? 
    </p> 
</div> 
<a id="delete-item">Delete</a> 

그리고 작업 예제 :이 내용을 설정하고 있기 때문에

http://jsfiddle.net/xsv8B/2/

+0

글쎄요, 그 큰 인터페이스와 윈도우는 프로토 타입으로 빌드 된 alraedy입니다, jQuery를 위해 그것을 recode하기 위해 일주일 정도 걸릴 것입니다. – Ricardo

+0

내가 볼 수있는 것은 jQuery 나 Prototype이없는 링크를 통해 실행되는 간단한 확인 창이 있다는 것입니다. 얼마나 많은 프로토 타입을 작성했는지에 대한 아이디어를 줄 수 있다면 다른 방향으로 안내 할 수는 있지만 지금은 jQuery UI의 대화 창이 가장 좋은 옵션처럼 보입니다. – escproxy

+0

글쎄, 어떻게 내 친구가 도움이 될지 모르겠다. 나는 당신이 프로토 타입의 드래그 가능한 윈도우 API에 가서 내가 거기에서하고있는 것과 똑같은 것을 볼 수 있다는 것을 의미한다. 창에 PHP 파일을로드하고 PHP 파일에서 js/jquery를 수행하려고합니다. – Ricardo

0

<script type="text/javascript"> 
function show_confirm() 
{ 
var r=confirm("Press a button!"); 
if (r) 
    { 
    alert("You pressed OK!"); 
    } 
else 
    { 
    alert("You pressed Cancel!"); 
    } 

return false; 
} 

//if you want to use jquery 
$(function(){ 
    $("a").click(function(){ 
     var r=confirm("Press a button!"); 
     if (r) 
     { 
     alert("You pressed OK!"); 
     } 
     else 
     { 
     alert("You pressed Cancel!"); 
     } 

     return false; 
    }); 
}); 
</script> 



<a href="#" onclick="return show_confirm()"><div id="delete"></div></a> 
+0

잘 알았어. [18 : 49 : 04.258] show_confirm가 정의되지 않았다. – Ricardo

+0

Kool . jquery 방식으로 내 편집 된 답변을 확인했습니다. – ShankarSangoli