2010-05-05 4 views
0

페이지의 URL에 해당 모달 ID가 전달 될 때 페이지에서 ID'd jQuery UI 모달을 열 수 있어야합니다. 예 :URL을 통해 jQuery 모달을 열 때 ID 스크롤을 중지합니다.

http://mysite.com/visit.html#directions 

#directions는 페이지 맨 아래, 닫는 BODY 요소 바로 앞에서 식별 할 수 있습니다. 페이지로드시 jQuery UI 대화 상자로 인스턴스화 된 다음 모달 ID의 현재 URL을 확인하는 함수를 실행 중입니다. URL에 모달 ID가 있으면 모달이 열립니다. 내가 데 문제는 브라우저가 자동으로 모달 전에 페이지 의 맨 아래에있는 ID 아래로 스크롤되는 것입니다

function autoOpenModal() { 
    if (document.location.href.indexOf('#')) { 
     var uriParts = document.location.href.split('#'); 
     var hashID = '#' + uriParts[1]; 
     if ($(hashID) && $(hashID).hasClass('dialog')) { 
      $(hashID).dialog('open'); 
     } 
    } 
} 

:

은 여기 내 자동 open 함수의 모습입니다 열립니다. 그래서 사용자가 모달을 닫으면 페이지의 맨 아래에있게됩니다.

아무도 내가 자동 스크롤에서 ID까지 브라우저를 멈추게 할 수 있다고 말해 줄 수 있습니까? 나는 event.preventDefault()을 보았지만 성공하지 못했습니다. 이벤트 체인에서 어디서 어떻게 사용하는지 모르겠습니다.

답변

0

하면 autoOpenModal() 함수 내에서 false를 반환보십시오 :

function autoOpenModal() { 
    if (document.location.href.indexOf('#')) { 
     var uriParts = document.location.href.split('#'); 
     var hashID = '#' + uriParts[1]; 
     if ($(hashID) && $(hashID).hasClass('dialog')) { 
      $(hashID).dialog('open'); 
     } 
    } 
    return false; 
} 
+0

감사합니다. 그러나 나는 이미 그것을 시도하고 그것이 작동하지 않는 것 같습니다. 브라우저가 document.ready() 이벤트를 실행하기 전에 마크 업을 "아래로"이동하기 때문이라고 생각합니다. – markedup

2

을이 당신의 URL "http://mysite.com/visit.html#directions"웹 브라우저는 항상 "방향"으로 이동해야하는 경우 그것이 그 질문의 대상입니다. "#"을 사용하는 대신 쿼리 문자열을 사용할 수도 있습니다. 제안, 카림에 대한

http://en.wikipedia.org/wiki/Query_string

관련 문제