3. $.fn.hilight = function(options) {
4. debug(this); // ...
6 };
7. // 디버깅을 위한 전용 함수
8. function debug($obj) {
9.if (window.console && window.console.log)
10 .window.console.log('선택 횟수: ' $obj.size());
12.// ...
13.}); 🎜>
우리의 "디버그" 메소드는 외부 클로저에서 접근할 수 없으므로 우리 구현에만 적용됩니다.
2.6 메타데이터 플러그인 지원
작성 중인 플러그인에 따라 메타데이터 플러그인 지원을 추가하면 더욱 강력해질 수 있습니다. 개인적으로 저는 이 메타데이터 플러그인을 좋아합니다. 몇 가지 "마크업" 옵션을 사용하여 플러그인을 재정의할 수 있기 때문입니다(예제를 만들 때 매우 유용함). 그리고 이를 지원하는 것은 매우 간단합니다. 업데이트: 댓글에 약간의 최적화 제안이 있습니다.
Java 코드
1.$. fn.hilight = function(options) {
2. // ...
3. // 요소 반복 전 기본 옵션 빌드
4. var opts = $.extend({}, $.fn .hilight.defaults, options);
5. return this.each(function() {
6. var $this = $(this);
7. // 요소별 옵션 빌드
8. var o = $.meta ? $.extend({}, opts, $this.data()) : opts
9. //...
몇 가지 작업: 메타데이터 플러그인이 설치되어 있는지 테스트합니다. 메타데이터 줄을 추출하고 이를 JQuery.extend에 마지막 매개변수로 추가하여 옵션 개체를 확장할 수 있습니다. 이는 이제 다른 옵션 설정을 재정의합니다. "markup"을 선택하면 "markup"에서 동작을 구동할 수 있습니다.
호출할 때 다음을 작성할 수 있습니다. jQuery.foo() 또는 $.foo();
Java code
1. 2.
3. 좋은 하루 보내세요!
4.
< ;div class="hilight { 전경: 'orange' }">
6. 좋은 하루 보내세요
7.
8.
9. 좋은 하루 보내세요!
10.
11. 이제 한 줄만 사용하여 어떤 div를 강조 표시할 수 있습니다. 스크립트:
12.$('.hilight').hilight();
3. // 플러그인 정의
4. $.fn.hilight = function(options) {
5. debug(this); 요소 반복 전 옵션
7. var opts = $.extend({}, $.fn.hilight.defaults, options)
8. // 일치하는 각 요소를 반복하고 형식을 다시 지정합니다.
9. .each(function () {
10. $this = $(this);
11. // 요소별 옵션 빌드
12. var o = $.meta ? $.extend({}, opts, $this .data()) : opts;
13. // 요소 스타일 업데이트
14. $this.css({
15. backgroundColor: o.ground,
16. : o.foreground
17. });
18. var markup = $this.html()
19. // 형식 함수 호출
20. .format(markup);
22.
24. function debug($ obj) {
26. if (window.console && window.console.log)
27.window.console.log('hilight 선택 횟수: ' $obj.size()); 🎜>28. };
29. // 노출된 형식 함수를 정의합니다.
30.$.fn.hilight.format(txt) {
31. ';
33. // 플러그인 기본값
$.fn.hilight.defaults = {
35.
36. 배경 : '노란색'
37.// 종료 종료
39.})
이 디자인 덕분에 사양에 맞는 강력한 플러그인을 만들 수 있었습니다. 나는 그것이 당신도 똑같이 할 수 있기를 바랍니다.
3. 요약
jQuery는 플러그인 개발을 위한 두 가지 방법, 즉
jQuery.fn.extend(object)를 제공합니다.
jQuery.extend(object); jQuery 클래스 자체를 확장하려면 클래스에 새 메서드를 추가합니다.
3.1 jQuery.fn.extend(object)
fn이 무엇인가요? jQuery 코드를 보면 찾기가 어렵지 않습니다.
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {//....
//......
}
원본 jQuery.fn = jQuery.prototype. 당신은 확실히 프로토타입에 익숙합니다. JavaScript에는 클래스에 대한 명확한 개념이 없지만 이를 이해하려면 클래스를 사용하는 것이 더 편리합니다. jQuery는 매우 잘 캡슐화된 클래스입니다. 예를 들어 $("#btn1") 문을 사용하면 jQuery 클래스의 인스턴스가 생성됩니다.
jQuery.fn.extend(object); jQuery.prototype을 확장하려면 jQuery 클래스에 "멤버 함수"를 추가해야 합니다. jQuery 클래스의 인스턴스는 이 "멤버 함수"를 사용할 수 있습니다.
예를 들어, 특수 편집 상자를 생성하는 플러그인을 개발하고 싶습니다. 클릭하면 현재 편집 상자의 내용이 경고됩니다. 이렇게 할 수 있습니다:
$.fn. 확장({
alertWhileClick:function(){
$(this).click(function(){
alert($(this).val());
});
}
});
$("#input1").alertWhileClick(); //페이지에서:
$("#input1")은 jQuery 인스턴스입니다. 멤버 메소드를 호출합니다. AlertWhileClick 이후에는 클릭할 때마다 현재 편집 내용이 먼저 팝업됩니다.
3.2 jQuery.extend(object);
jQuery 클래스에 클래스 메소드를 추가합니다. 이는 정적 메소드를 추가하는 것으로 이해할 수 있습니다. 예:
1.$.extend( {
2.add:function(a,b){return a b;}
3.})
은 jQuery에 add라는 "정적 메서드"를 추가합니다. jQuery의 경우 $.add(3,4) //return 7 메서드를 사용하세요.