2012-01-30 2 views
1

다음과 같은 문제로 정말 고민 중입니다.jQueryMobile - SimpleDialog fullHTML rel = 'close'가 여러 번 뒤로 이동합니다.

내가 jQueryMobile을 사용하고 - SimpleDialog 플러그인은 here 발견

function popAlert(title, msg) { 
    $(this).simpledialog({ 
     'mode' : 'blank', 
     'prompt' : title, 
     'cleanOnClose' : true, 
     'useModal':true, 
     'fullHTML': msg + '<a rel="close" data-role="button" data-theme="c">Ok</a>' 
     }) 
    $(this).simpledialog('refresh'); 
} 

난 그냥 때 원하는 :

나는 자주 내가 지금처럼 필요에 따라 호출 할 수 있도록 글로벌 유틸리티 함수를 만들 생각 사용자가 대화 상자 페이지가 사라지면 대화 상자의 'X'버튼 기능과 같은 이전 페이지로 돌아갑니다.

그러나 대화 상자가 호출 될 때마다 스택으로 역 이동이 추가됩니다. 즉, 두 번 호출 된 경우 사용자가 Ok를 누르면 모바일 앱이 이전 페이지로 이동하고 이전 페이지는 두 개 뒤로 이동합니다.

제안 사항?

감사합니다.

답변

2

동일한 문제가있었습니다. 수정 - 대신 rel='close'을 사용하는 본인은 tprivious 대답은 휴대 전화에서 작동하지 않는

onclick="$('#simpledialog').simpledialog('close');" 
0

을 사용했다. 나는 다른 것을 시도했지만 모달 창을 가지고 있고 고정 된 바닥 글 메뉴를 가지고 있지 않다면 (메뉴가 안드로이드 2.3에서 더 이상 고정되어 있지 않기 때문에) 일하고있다.

$('.ui-simpledialog-screen').click(); 

그냥 창 밖을 클릭하십시오.

0

나는 rel이 어디에서 문제가되는지 생각해.

파일 jquery.mobile.simpledialog.js에서

(라인 129)

if (o.mode === 'blank') { 
    self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() { 
     self.close(); 
      alert('1'); 
    }); 
} 

당신이 경고 넣어 먼저 개방에 (안드로이드 2.3.3) 모바일 브라우저에서 그것을 시도하고 당신이 하나의 경고를 얻을 줘야 닫으면 , secound 열고 등등이 경고를 얻을 것 닫습니다 ...

솔기에 (임은 일어나지 않을 것입니다 아마 부하에 페이지 전환되지 부하를 사용하여) 이벤트 결코 바인딩 해제

바인딩 모든 시간입니다

대표는 익숙하지 않고이 코드를 b로 다시 작성했습니다. jquery 함수 ind 및 unbind

if (o.mode === 'blank') { 
     self.pickerContent.find('[rel="close"]').bind('click',function() { 
     self.close(); 
     self.pickerContent.find('[rel="close"]').unbind(); 
     }); 
     /* 
     self.pickerContent.delegate('[rel="close"]', o.clickEvent, function() { 
     self.close(); 
     });*/ 
} 

나는 모바일 브라우저에서 테스트했지만 현재 작동 중이다.

아마 self.pickerContent.undelegate ('[rel = "close"]'); 원래 코드를 수정합니다.

내가 더 찾을 서로 다른 행동과 및 localY 및 모바일 브라우저에 가까운

다른 행동 그 개의 다른 행동 렸기 때문에, 나는 useDialog가 false를 사용하고 내가 모바일 브라우저에 넣을 때 대화를 얻을 . 이것은 이

줄 141 - jquery.mobile.simpledialog이기 때문입니다.JS

if ((docWinWidth > 400 && !o.useDialogForceTrue) || o.useDialogForceFalse || o.fullScreen) { 

당신이 400 픽셀 큰 함께 다음 useDialogForceTrue = true를 넣어해야하며, 모든 브라우저에서 대화를 얻을 것이다 경우 useDialog이 작동하지 않는 사실 그냥두면

. 대화 모드 (docWinWidth, useDialogForceTrue, useDialogForceFalse, fullScreen 및 useDialog)에 영향을주는 5 가지 변수가 있기 때문에 조금 혼란 스럽습니다. 즉 useDialog를 사용하면 모바일 브라우저에서 false로 설정하면 항상 대화 상자가 표시됩니다 (docWinWidth> 400 & &! o.useDialogForceTrue).

그럼 알았어.하지만 지금은이 대화 상자에서 다른 콘텐츠를 다시로드하고 싶습니다. 그리고 나서 닫고 다른 콘텐츠로 다시 엽니 다. activedialog.simpledialog ('close');

라인 (213) - jquery.mobile.simpledialog.js

다음
if (self.options.cleanOnClose === true && self.options.useDialog === false) { 
    self.clean(); 
} 

하지만 흠 ... 당신이 속성을 사용할 수 없습니다 'cleanOnClose'당신이 대화

의 내용을 치료할 수없는 대화하는 경우 내가 단순히 수표를 제거되는 한 것은 대화입니다

경우 (self.options.cleanOnClose === 사실) {

지금 임은 다른 죄수를 표시하기위한 대화 상자를 재사용 텐트

simpledialog2 사용 제안이 버전에서는 많은 문제가 해결되었습니다!

관련 문제