2009-10-18 2 views
0

jQuery 플러그인을 작성 중이며 플래그 (코드)가 true로 설정된 후 실행될 메소드 이름을 사용자가 전달하려고합니다. 나는 이미 필요에 따라 플래그를 작동시키고 있으며, 전달 된 메소드를 실행하는 방법이 필요하다.사용자 메서드를 사용하는 jQuery 플러그인

(function(jQuery){ 
    $.fn.extend({ 
    pluginName: function(options) { 
    var defaults = { 
    parameter1: 0, 
    method: function(){} 
    }  
    var options = $.extend(defaults, options); 

     return this.each(function() { 
    var opt = options; 
    var flag = false; 
    if(opt.parameter1 > 0){ 
    flag = true; 
    } 
    if(flag){ 
    //call users method 
    } 
       jQuery(this).hide(); 


     });//END return 
    }//END counter method 
});//END extend 
     })//END function 
     //Return jQuery object 
     (jQuery); 

사용자는 다음과 같이 호출합니다 : : 예를 들어 당신은 내가 달성하기 위해 노력하고있어 볼 수 있도록 내가 코드 위의 테스트하지 않았습니다

$("#divName").pluginName({ 
    parameter1: 1, 
    method: function(){alert("test");} 
}); 

, 그냥 그림이다 . 미리 감사드립니다. 기능은 자바 스크립트의 첫 번째 클래스 객체이기 때문에

+0

나는 당신과 함께 플러그인을 시작하는 의미 생각 '(function (jQuery) {...} 대신 function ($ {{{'}) 함수 내에서 jQuery 객체를 참조하기 위해'$ '단축키를 사용할 수 있습니다. –

답변

1

귀하의 예제 및 같은 사용자가 제공 한 방법 사이에는 차이가 없습니다를 실행하는 플러그인에

options.method(); 

을 사용할 수 있습니다 다른 방법. 따라서 다른 방법을 호출하는 것과 같은 방법으로 호출 할 수 있습니다. 예를 들어

:

if (flag) 
    opt.method(); 

방법은 인수를하는 경우, 당신은 당신이 보통의 방법으로 인수를 전달 같은 방법으로 전달할 수 있습니다.

4

, 당신은 단지 기능

1

이 주석은 질문의 요점과 관련이 없지만 일반적으로 jQuery 및 JS에 대해 더 자세히 배우는 데 도움이 될만한 가치가 있다고 생각합니다.

코드는 현재 읽 이러한 방식으로 jQuery를 사용하는 경우 익명 함수를 만드는 이유 중

(function(jQuery) { 
    $.fn.extend({ 
    /* ... */ 
    }); 
})(jQuery); 

하나는 다른 자바 스크립트 라이브러리와 충돌없이 $ 객체를 참조 할 수 있도록합니다. 그러나 익명 함수에 jQuery이라는 매개 변수를 수락하고 jQuery.fn.extend 대신 $.fn.extend으로 계속 전화하십시오. 당신은 당신의 코드에서 $으로 jQuery 오브젝트를 참조하는 계획하는 경우

, 나는, 익명 함수에 $에 매개 변수 이름을 수정하는 것이 좋습니다 예 :

(function($) { 
    $.fn.extend({ 
    /* ... */ 
    }); 
})(jQuery); 
+0

주석을보세요. :) 질문 : –

+0

다른 라이브러리와의 충돌을 피하기 위해 jQuery 네임 스페이스를 사용하려고했지만 모든 "$"를 "jQuery"로 바꾸는 것을 잊었습니다. – Wilkins

관련 문제