2013-09-30 6 views
0

내 jQueryUI 모달에서는 버튼을 클릭 할 때마다 preventDefault() 또는 return false 일 때도 부모 페이지가 새로 고침됩니다. 이 예상되는 동작입니까?닫기 jQueryUI 모달 새로 고침 페이지 닫기

html로 :

<li><a id="addFunds" class="no-close" href="#">Add Funds</a></li> 

모달 :

<div id="addFundsModal" class="modal-hidden" title="Add Funds to Your Account"> 
    <div class="leftBar"> 
     <h3>Add Funds</h3> 
       //other stuff 
       <form> 
         //<fieldset>, etc. 
         <button class="modal-close btnBlue" href="#">Cancel</button> 
       <button class="add-funds btnGreen">Add Funds</button> 
     </form> 
    </div> 
</div> 

JQuery와 : 나는 또한 내가 dialog.close 또는 dialog.destroy을 사용할지 여부에 대해 확실하지 않다

$('#loggedInDropdown').on('click', '#addFunds', function(e) { 
     e.preventDefault(); 
     $('#addFundsModal').dialog({ 
      modal: true, 
      dialogClass: 'no-close', 
      width: 500 
     }); 
    }); 

    $('.ui-dialog').on('click', '.modal-close', function(e) { 
     e.preventDefault(); 
     $('#addFundsModal').dialog('close'); 
    }); 

하지만, 그것은 다른 게시물에 대한 것입니다.

당신의 문제는 이벤트 위임에
.dialog({ 
     resizable: false, 
     height:240, 
     modal: true, 
     buttons: { 
     "Delete all items": function() { 
      $(this).dialog("close"); 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
     } 
    }); 

답변

1

우리는 보통 .dialog 옵션 내부의 버튼 동작을 첨부 링크에서 처음에는 해당 클래스에 이벤트를 첨부해도 효과가 나타나지 않으며 (.ui-dialog은 존재하지 않음) 정상적인 버튼 비헤이비어 양식 제출, 페이지 새로 고침이 적용됩니다.

시도 :

$('#addFundsModal').on('click', '.modal-close', function (e) { 
    e.preventDefault(); 
    $('#addFundsModal').dialog('close'); 
}); 

또는 클래스에 적용 (반드시 더 나은)

$('.modal-hidden').on('click', '.modal-close', function (e) { 
    e.preventDefault(); 
    $('#addFundsModal').dialog('close'); 
}); 

Demo

+0

감사합니다, 이것은 아마도 작동합니다. 이제 페이지를 기본 동작으로 새로 고침하는 이유는 무엇입니까? – trysis

+0

취소 버튼에서 알아 차 렸습니다.'href = "#"'입니다. 왜 그걸 갖고 싶어? – Blaise

+0

도움이되는 것으로 들었습니다. 심지어 꺼져 있어도, 그것은 여전히 ​​일어나고있었습니다. – trysis

1

, 난 .ui-dialog 때문에 실행되지 없구요 취소에 대한 클릭 이벤트를 클릭 첫 번째 시간을 만들어 생각 :

+0

버튼 하나로 완벽하게 작동했습니다. 다른 버튼은 다른 것을하고 있지만 동일한 아이디어를 사용할 수 있습니다. – trysis

+1

양식을 제출하기를 원하는 다른 버튼의 @trysis? 그래서 괜찮아요 그렇지 않으면 당신이 할 수있는 일은 양식을 제출할 필요가없는 버튼을 위해 그들 모두에게 같은 클래스를 부여하고 이벤트를 묶는 것입니다. 다른 것들은 그들 자신의 핸들러에서 처리한다. – PSL

+1

더 나은 대화 닫기 이벤트 내부의 대화 상자를 파괴하십시오. 그것을 구독 할 수 있습니다 – PSL