많은 다른 비슷한 질문과 마찬가지로 여기서는 jQuery 플러그인을 처음 작성했습니다. 선택 요소를 가져 와서 클릭 할 수있는 목록 요소로 대체하여 견본으로 사용하기위한 것입니다. 주요 기능이 훌륭하게 작동하지만 다른 옵션을 호출 할 수있는 기능을 추가해야합니다. 그러면 특정 옵션이 비활성화됩니다. 내 문제는이 일을 할 때 일부 클릭 요소를 바인딩하고 다른 요소를 바인딩 해제해야한다는 것입니다.Jquery 플러그인, 다른 메소드의 함수 호출
현재 내 원래 바인딩은 'init'메소드 내부의 함수에 포함되어 있습니다. 다른 '비활성화'메서드에서 해당 함수를 호출 할 수 있어야합니다.
다음(function($){
var methods = {
// Init method
init : function(options) {
// Set options
var
defaults = {
clickCallback: function(){} // Define empty function for click callback
}
, settings = $.extend({}, defaults, options)
// Function to bind options
function fnBindOptions(var1, var2, var3) {
// Stuff to bind elements
// Hit the click callback
settings.clickCallback.call(this);
}
return this.each(function() {
// Check that we're dealing with a select element
if(element.is('select')) {
// Loop through the select options and create list items for them
$('option', element).each(function() {
// Stuff to create list elements
// Bind click handler to the new list elements
fnBindOptions(var1, va2, var3);
});
}
});
// return
return this();
}
// Disable buttons method
, disable : function(options) {
// I need to access fnBindOptions from here
$(elementID).children('li').removeClass('disabled').each(function(){
fnBindOptions(var1, var2, var3);
});
}
};
내 문제입니다 : 그래서 여기에 몇 가지 코드의 내가 그것을 비활성화하기 전에 각 옵션에 bind 함수를 호출 할 필요가 -하지만 비활성화 방법 내에서 fnBindOptions에 액세스 할 수 없습니다 - 그리고 fnBindOptions는 콜백을 포함하기 때문에 'settings'변수에서 'init'메소드 외부로 이동할 수 없습니다.
누구에게 조언이 있습니까?
감사합니다. 이 문제를 해결하기 위해
브릴리언트, 그것은 완벽하게 작동하는 것 같다 . 감사!! –
위대한 대답은 확실히 나를 도왔습니다. 고마워요. – Asciant
"메소드"가 아직 초기화되지 않았을 수도 있다는 경고를받습니다.이 메소드는 JSLint를 전달합니까? –