2012-06-11 2 views
0

jquery 대화 상자 모달 상자에서 다른 컨트롤러에 대한 대부분의 모든 양식을 가지고 있고 내가 실행중인 문제는 해당 모달이로드 될 때 ujs 링크 (데이터 -remote, data-confirm 등)은 jquery에 의해 완전히 무시됩니다. 나는 그 부분적인 부분이 아약스를 통해로드 될 때, 이벤트가 아약스에 의해 돔에 추가되는 새로운 링크를 포함하도록 버블 링되지 않는다고 생각하고 있습니다. 아무도 이것에 빠지지 않았나요? 나는 그 길을 찾아 낼 수가 없다. 매우 명확하지 않은 경우 일부 코드를 게시 할 수 있습니다 ...jQuery ujs 내부 jquery 모달이 작동하지 않습니다

답변

0

그래서는 사용자 지정

var myCustomConfirmBox; 
$.rails.allowAction = function(element) { 
    var answer, callback, message; 
    message = element.data("confirm"); 
    answer = false; 
    callback = void 0; 
    if (!message) { 
    return true; 
    } 
    if ($.rails.fire(element, "confirm")) { 
    myCustomConfirmBox(message, element); 
    } 
    return false; 
}; 
myCustomConfirmBox = function(message, callback) { 
    $("#dialog-confirm .content").html(message); 
    return $("#dialog-confirm").dialog({ 
    resizable: false, 
    height: 180, 
    modal: true, 
    buttons: { 
    Continue: function() { 
     $.rails.handleRemote(callback); 
     return $(this).dialog("close"); 
    }, 
    Cancel: function() { 
     return $(this).dialog("close"); 
    } 
    } 
}); 
}; 
0

대화 상자의 열린 콜백으로 ujs 초기화를 이동하십시오.

+0

계속 진행되는 jquery_ujs가 없습니다. 자산 파이프 라인에 포함시키는 것만으로 문서에 넣습니다. – Magicmarkker

1

마크 업이 동적으로 추가되는 경우 이벤트 위임을 사용하는 경우에만 이벤트가 작동합니다.

jQuery에서 이벤트 위임의 기초에 대한 좋은 글이 여기에 있습니다. http://jqueryfordesigners.com/simple-use-of-event-delegation/. 기본적으로 bind을 통해 생성 된 핸들러를 on으로 바꾸기를 원할 것입니다. 좋아

+0

에 대한 기본 레일 기능 : remote => true 및 data-confirm은 다음을위한 기본 레일 기능입니다. ajax에 의해 생성 된 링크에서 작업하지 않습니다. 내가 : data => {: confirm => "sure?"} : remote => true 일 때 confirm 질문을하고, continue를 누르면 원격 호출이 아닌 페이지 새로 고침이 실행됩니다. – Magicmarkker

0

내가 그냥 버전 화를 추가, Magicmarkker하여 방법을 시도, 진정한 링크의 ontop을 확인 지금 내가 할 수있는 사용자 정의 UI를 jQuery 대화 상자를 사용하여이 함께 고정 모달보기 페이지에서 js import 코드를 실행하면 작동합니다.

<script type="text/javascript" src="/assets/jquery_ujs.js?body=1"></script> 
관련 문제