2012-01-28 3 views
3

jQuery가 모든 페이지에서 모든 클릭을 제어하기 때문에 페이지를 다시로드 할 때마다 페이지를 반환하는 정보를 서버로 전달하는 사이트에서 작업하고 있습니다. 그러나 클릭 리스너를 다시 정의해야합니다. 궁금한게 거기에 영구적으로 함수를 정의하는 방법은 무엇입니까?jQuery에서 함수를 영구적으로 정의하는 방법이 있습니까?

jQuery 코드 : 무 상태 플랫폼, 페이지가로드가이 같은 일을 리 바인드해야 할 때마다 인

$(function(){ 
    $('.lvl1Links').on('click',function(event) { 
     event.preventDefault(); 
     $('pload').html('<img src="source/image/lbl.gif">'); 
     var page = $(this).attr('id'); 
     var huh = $('input:hidden').val(); 
     var data = 'pop='+huh+'&page='+page; 
     $.post('source/php/bots/authorize.php',data,function(data){ 
       $('#pager_master_div').html(data).slideDown(); 
       $('pload').html(''); 
      }); 
    }); 
}); 
+1

페이지가 영구적이지 않으므로 영구히 정의 할 수 없습니다. 모든 페이지의 모든 링크는 서로 다른 일을하므로 각 개별 링크에 대해 브라우저가 어떻게해야하는지 알려줘야합니다. – DaveRandom

답변

1

. 그래도 쉽게 만들 수있는 패턴은 다음과 같습니다.

사이트 영역 전체에서 공통적 인 경우 공통 파일의 init 함수에이 유형의 내용을 넣으십시오. 예 :

global.js : 예를 들어 페이지에 스크립트 블록에서 다음

function InitSalesPageOrWhatever(){ 
    $(function(){ foo; }); 
    OtherStuffThatRunsOnEverySalesPageLoad(); 
} 

SalesPage :

InitSalesPageOrWhatever(); 

콘텐츠 페이지에는 단 한 줄만 있습니다. 멋지고 깨끗한 콘텐츠 페이지의 이점 외에도 JS의 큰 덩어리는 이제 사용자의 브라우저에 의해 캐시 될 수 있으므로 사용자의 부담을 줄이고 경험을 더 빠르게 만들어줍니다.

1

jQuery (및 모든 자바 스크립트)는 영속성을 사용할 수없는 클라이언트 측에서 실행됩니다. 당신이 찾는 영속성에 접근하는 데는 두 가지 방법이 있습니다.

  1. jQuery를 쓰고 페이지에 넣으십시오.

  2. 클릭 처리기를 한 번 작성하고 서버 쪽 코드/스크립팅 언어를 사용하여 모든 HTML 페이지에 포함하십시오. PHP가 포함 된 예제는 here입니다.

HTML 템플릿 (사이트의 모든 페이지에 포함되어야하는 표준 HTML (머리글, 바닥 글, 탐색 등)이 포함 된 문서)을 고려하는 것이 좋습니다.

관련 문제