2010-05-14 3 views
3

현재 모든 페이지에 JQuery.ext.js라는 파일이 있습니다. 이 파일에는 다음과 같은 기능을하는 수많은 함수가 있습니다.jQuery ext 함수를 포함하는 가장 좋은 방법은 무엇입니까?

(function($) { 


    /** 
    * Checks to see if a container is empty. Returns true if it is empty 
    * @return bool 
    */ 
    $.fn.isEmptyContainer = function() { 
     //If there are no children inside the element then it is empty 
     return ($(this).children().length <= 0) ? $(this) : false; 
    }; 

    /** 
    * Strip html tags from elements 
    * @return jQuery 
    */ 
    $.fn.stripHTML = function() { 
     var regexp = /<("[^"]*"|'[^']*'|[^'">])*>/gi; 

     //Loop through all elements that were passed in 
     this.each(function() { 
      $(this).html($(this).html().replace(regexp, "")); 
     }); 
     return $(this); 
    }; 

    /** 
    * This function will check the length of a textarea and not allow the user to go beyond this length. 
    * You should use the onkeypress event to trigger this function 
    * 
    * @param event event This value should always be event when passing it into this function 
    * @param maxlength int The maximum amount of character that the user is allowed to type in a textarea 
    */ 
    $.fn.enforceMaxLength = function(event, maxlength) { 
     //Only allow the client code to use the onkeypress event 
     if(event.type == 'keypress') { 
      //If the client code does not pass in a maxlength then set a default value of 255 
      var charMax = (!maxlength || typeof(maxlength) != "number") ? 255 : maxlength; 

      //If the user is using the backspace character then allow it always 
      if(event.which == 8) { return true; } 
      //Else enforce the length 
      else { return ($(this).val().length <= charMax); } 
     } 

     //Will only get here if the event type is not keypress 
     return false; 
    }; 
})(jQuery); 

다른 방법이 있습니까? 또는 이것이 대부분의 사람들이하는 방식입니까? 어떤 도움

감사합니다, 메트로 폴리스

유효성 검사 플러그인

답변

2

모두 해당 기능의 범위에 따라 다릅니다. 매우 일반적 인 함수 목록을 응용 프로그램에서 계속 사용하는 경우이를 별도의 파일에 넣고 필요할 때 포함시킵니다.

그러나 여기에 약간의 설명이 있습니다. 적절한 용어를 사용하면 실제로는 플러그인이 아닌 기능을 사용하고 있으며 저작 가이드를 준수하지 않는 것입니다. 나는 이것이 중요한 문제라고 생각하지 않는다. :)

또한이 파일에서 샘플링 한 함수는 유효성 검사 루틴의 역할을하는 것으로 보이므로 별도의 유효성 검사 라이브러리에 넣을 것입니다. 더 나은 것은 jquery-validate와 같은 것을 사용하고 $ .validator.addMethod()를 사용하여 사용자 정의 유효성 검사 메서드를 추가하는 것입니다.

편집 :

I 그룹의 jQuery 기능/플러그인, 당신의 예로서 정확히 같은 그것을 할 것입니다 얼마나 정확하게에 관해서는

:

(function ($) { 
    // my list of functions, plug-ins, or classes; as needed by the application 
}(jQuery); 

하지만 것 그룹을하여 기능. 예 : 유효성 검사, 포맷팅, 애니메이션 기능/플러그인이있는 경우, jquery.myvalidation.js, jquery.myformatting.js 등 3 개의 파일을 생성합니다. 함수 또는 플러그인을 사용할시기에 대한 질문은 다음과 같습니다. in "은 현재"jQuery 요소 (플러그인 사용)에 대한 액세스 권한이 필요한지 아닌지 (함수 사용) 여부에 달려 있습니다.

필자가 강조하고자하는 점은 불필요한 결합을 피하고 재사용을 극대화하기 위해 모듈 방식으로 논리적으로 항목을 그룹화하는 것입니다. jQuery 플러그인을 작성할 때 자동 완성, scrollTo 또는 유효성 검사 플러그인과 같은 매우 특정한 기능을 처리해야합니다.

+0

도움 주셔서 감사합니다. 사실 여기에는 단순히 검증 기능 이상이 있습니다. 이것들은 그 파일의 처음 몇 가지 일뿐입니다. 당신은 내가 실제로 플러그인을 사용하고 있다고 말했고, 그렇습니다. 플러그인 형식으로 설정했는데, 다른 방식으로해야한다고 생각합니까? 여기에 다른 함수를 넣고 유효성 검사를 제거하여 정리해야하는 다른 기능을 보여 드리겠습니다. – Metropolis

+0

문제 없습니다. :) 나는 내 대답을 업데이 트했습니다, 도움이 희망! – Favio

+0

좋습니다! Favio의 도움에 많은 시간을드립니다. 나는 적어도 내가 올바른 방향으로 가고 있는지 이해할 수 있도록 도왔습니다.나는 이것에 대해 좀 더 생각해보고 논리 매너에서 이들을 분리하는 방법을 찾으려고 노력할 것이다. – Metropolis

0

체크 아웃 official plugin authoring guidelines을 코드에

추가 된 다른 플러그인을 편집하고 제거. 또한 Mike Alsup은 매우 구체적이고 유용한 개발 패턴 here을 상세히 설명했습니다.

+0

나는 이미이 두 가지를 모두 보았습니다 ...... 그러나 플러그 접속 식을 위해 특히 쓰여졌다 ..... 나는 다만 나가이 여분 기능으로해야하는 것을 알아 내고 싶 는다? 그들을 좋아하게하는 것이 좋습니까? 아니면이 파일을 구성하는 더 좋은 방법이 있습니까? – Metropolis

관련 문제