2010-02-12 6 views
1

나는 머리말, 꼬리말 및 동적 인 몸을 적재하는 템플렛이있는 위치에 종사하고있다. 현재 페이지와 사용자가 로그인 한 상태에 따라로드 될 스크립트를 지정하는 클래스가 있습니다. 나는 몇 JQuery와 플러그인을 작성하고, 한 페이지가로드 내가문서 준비가 되었습니까?

$ (문서)를 통해 플러그인에 전화를해야 할 때 .ready (함수() { // $(). thePlugin() }) ;

개인적으로이 옵션을 호출 한 각 페이지에 하나 이상의 doc 준비 스크립트가 없지만 다른 옵션은 표시되지 않습니다. 4 또는 5 개의 스크립트에서 해당 함수를 호출하는 것이 좋지 않은가요?

답변

0

PHP를 사용하는 경우 PHP 자동 로더를 사용해 보셨습니까?

http://php.net/manual/en/language.oop5.autoload.php

이것은 당신이 요청을 줄일 수 있도록하고, 마지막 기회 포함 할 수있다.

+0

내가 일할 때 좀 살펴 보겠습니다. 제안 해 주셔서 감사합니다! – cdnicoll

0

당신이 부르는 기능은 아니지만, 당신이 연결하고있는 이벤트는 여러 번 해보는 데 아무런 문제가 없습니다. 그러나 특정 순서로 해고하는 것에 의존하지 않아도됩니다. 이러한 모든 페이지에 공통적 외부의 .js 파일로 이동하는 경우, 또한

$(function() { $().thePlugin(); }); 

:

쪽 끝이 동등한 바로 가기입니다. 많은 일이 일어나지 않으면 아무 것도 발견하지 못하는 몇몇 선택자가 다 치지 않을 것입니다. 그것은 당신이 사용하고있는 코드의 몇 %를 기준으로 한 것일까 요?

2

한 페이지에 여러 개의 ready() 블록이 있으면 좋습니다. 실제로, 정확히 설정되어 있으므로이 작업을 수행 할 수 있습니다. (보통 load() 이벤트에 사용되는) 오래된 방법은 같은 일을했다 :

window.onload = function() { 
    ... 
} 

하지만 빠르게 여러 스크립트를 주도 모두 할당 load() 핸들러, 파산 :

function addLoad(handler) { 
    var current = window.onload; 
    if (current) { 
    window.onload = function() { 
     current(); 
     handler(); 
    } 
    } else { 
    window.onload = handler; 
    } 
} 

글쎄, 조금 있었다 그보다 더 많은 것보다는 그게 기본 원리였습니다. jQuery는 본연의 일을 처리하므로 이벤트 처리기가 서로 충돌하지 않습니다.

복수형 ready() 핸들러를 사용하면 코드를 유지 관리하기가 쉬우 며 쉽게 읽을 수 있습니다. 당신이 단지 몇 가지 일을하고 있다면 걱정하지 마십시오. 수백 개까지 (같은 페이지에) 있다면 어쩌면 다시 생각할 시간입니다.

대체 접근법은 마크 업을 PHP의 버퍼에 쓰고 모든 ready() 코드를 다른 버퍼에 쓰고 결국에는 원하는 순서대로 버퍼를 쓸 수 있습니다. 이 방법으로 ready() 핸들러를 효과적으로 결합 할 수 있습니다.

+0

고마워요 기본 대답 내가 찾고 있던! – cdnicoll

+0

이 질문을 답으로 받아 들여야합니다. 단지 1 초 밖에 걸리지 않습니다. –

관련 문제