2014-10-05 5 views
0

특정 URL로 이동 한 다음 단추 표시/숨기기에 대한 내 작업이 연결된 클릭 이벤트가 있습니다.Jquery- 클릭 함수에서 매개 변수로 이벤트를 처리하는 방법

ViewManager.js

$("#btn").on("click", function(event){ 
    window.location.href= '#test.html'; 
} 

내가 해당 페이지로 이동 한 후, 나는 내가 숨기기가 target.id에 따라 (이 경우에있는 표시해야 버튼이 있습니다. 나는 이것을 사용하고 있습니다 btn). btn 대상 ID의 경우, 나는 다음과 같이 뭔가를 버튼을 보여 다른 버튼을 숨길 수 :

지금 문제가

if (event.target.id == 'btn'){ 
     $('#submit-account-detail').css('display', 'none'); 
     else { 
     $('#submit-account-detail').css('display', 'block'); 
     } 

을 account.js, 크롬 완벽 글로벌 이벤트를 처리하지만, 파이어 폭스 오류가 발생했습니다 :

ReferenceError: event is not defined 

다른 URL로 이동하기 전에 이벤트를 매개 변수로 전달했습니다. 파이어 폭스는 전역 적으로 이벤트를 처리하지 않으므로 오류가 발생합니다. 나는 소스를 찾아 보았고 click 이벤트 (이미 완료 됨)에 이벤트를 매개 변수로 전달할 것을 제안했습니다. 페이지 탐색 후에 이벤트를 어떻게 볼 수 있습니까?

편집 -------------------

나는 ViewManager.js 스크립트에서이 같은 짓 : $("#btn").on("click", function(event){ targetId = window.event; window.location.href= '#test.html'; }

을하고 내가 테스트 account.js 스크립트의 조건 :

if (targetId && targetId === 'btn'){ 
      $('#submit-account-detail').css('display', 'none');} 

그것이 정의과 targetId을 가지고 있지만 ReferenceError: targetId is not defined를 throw 할 때 잘 작동 할 때 잘못된 방법으로 targetId != 'btn' ... 임 선언 VAR ??

+0

전역 '이벤트'는 어디에 선언되어 있습니까? 여러분이 우리에게 보여 주신 것은 함수 매개 변수입니다. 다른 스크립트 파일에 코드를 작성할 수있는 것은 아닙니다. – Bergi

+0

어떻게 선언 할 수 있습니까? 이것이 방법 일까요? window.event = ''?? – user1234

+0

현재 페이지의 다른 _page_ 또는 요소/앵커로 이동 하시겠습니까? 다른 페이지 인 경우 JS 변수를 통해이 작업을 수행 할 수 없습니다. 글로벌 변수조차도 현재 페이지에서 "활성"이기 때문입니다. 현재 페이지 내에서 탐색하는 경우 원래 클릭 핸들러 내에서 버튼을 표시하거나 숨길 수없는 이유는 무엇입니까? – nnnnnn

답변

0

페이지 탐색 후에 새 페이지에서 이전 이벤트 개체를 사용할 수 없습니다. 그럼에도 불구하고 요청을 받거나 쿠키를 설정하여 마지막 이벤트에 대한 정보를 전달할 수 있습니다.

여기서 보이는 것은 위치의 해시를 변경하는 것입니다. 이렇게하는 올바른 방법은 window.location.hash = "#something"입니다. 이 경우 귀하의 페이지가 실제로 다시로드되지 않습니다. 즉, 전역 변수를 설정하면 다른 함수에서 액세스 할 수 있습니다.

전역 변수를 정의하는 방법은 한 가지 이상 있습니다.

  1. 어떤 함수 외부 쓰기 var varname, 그리고 당신이 원하는 값으로 어디 varname을 설정합니다.
  2. 아무 값으로도 어느 곳에서나 window.varname을 설정하십시오.

동일한 변수를 가진 다른 로컬 변수가 없으면이 변수를 varname을 사용하면됩니다.

내 경우에는 이벤트 처리기에 window.event = event을 설정해보십시오.

+0

나는 그것을 시험해 보았다. 그리고 그것은 진실한 조건을 위해 일한다. 그러나 나는 어떻게 모든 조건을 통과하기 위해 이벤트를 세계적으로 다룰 수 있을까 ?? 위의 편집 .. 고마워요! – user1234

+0

다른 조건은 무엇입니까? 이상적으로, 전역 변수로 이벤트를 선언해서는 안되지만, 그렇게해야한다면, myevent와 같은 다른 이름을 사용하고 그 이벤트 데이터를 사용할 때마다 명시 적으로 사용하십시오. – nisargjhaveri

+0

아니면'event.target.id'를 전역 변수에 저장할 수 있습니다. – nisargjhaveri

관련 문제