2012-04-06 21 views
1

Ich habe einen einfachen (leichten) div-Schieberegler, den ich vor einiger Zeit geschrieben habe, und weil ich ihn in verschiedenen Projekten verwende, ist es an der Zeit, ihn in ein eigenes Plugin zu verpacken (auf die Gefahr hin, dass er nicht so leicht ist) nicht mehr!).Benutzerdefiniertes JQuery-Plugin - wie erhält/erhält man benutzerdefinierte Optionen?

Ich habe gelesen und kopiert von http://docs.jquery.com/Plugins/Authoring, da dies mein Plugin Kirsche knallt, und es macht Sinn (meistens), aber etwas entzieht sich mir. Hier ist mein Plugin-Code:

(function($) { 

    //List of callable methods 
    var methods = { 
     init : function(options) { 

      var settings = $.extend({ 

       optionOne : 'aaa', 
       optionTwo : 'bbb', 
       optionThree : 'ccc', 
       optionFour : 'ddd' 

      }, options);   

     }, 

     error : function(message) { 
      alert(message);    
     },   

     showSettings : function() { 
      //This bit... how to show whats in 'settings' defined in init? 
     } 

    } 

    $.fn.ccSlider = function(method) { 

     //Calling methods 
     if (methods[method]) { 
      //If plugin is called with a recognised method, run that. 
      return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1)); 
     } else if (typeof method === 'object' || !method) { 
      //if plugin is called without a method, run the init() function 
      return methods.init.apply(this, arguments); 
     } else { 
      //Run the error() function to catch all else. 
      return methods.error("ccSlider: Method '"+method+"' does not exist!");    
     } 
    }; 

})(jQuery); 

Hier ist alles wie erwartet funktioniert, aber ich kann es nicht weitergehen, um die Methoden zu schreiben ich brauche, aber nur, weil ich kann nicht herausfinden, wie der Inhalt von ‚Einstellungen zuzugreifen 'außerhalb der init() -Methode.

Ich habe 'showSettings' als Test verwendet ... Wie würde ich eine showSettings-Methode schreiben, die aufgetaucht ist und mir gesagt hat, was der Wert einer bestimmten Einstellung (wie zB optionTwo) ist?

+0

..oder best practice, nach der JQuery Website ... – Codecraft

Antwort

1

Sie haben die richtige Architektur, aber Methoden und Einstellungen sollten für Ihr Plugin global sein.

(function($) { 
    var defaults = { 
     optionOne : 'aaa', 
     optionTwo : 'bbb', 
     optionThree : 'ccc', 
     optionFour : 'ddd' 
    } //if there are any 

    var settings = {}; //you can reach the settings from any where in your plugin now 
    //List of callable methods 
    var methods = { 
     init : function(options) { 
     //initialize the settings in your init function and you are good to go 
     settings = $.extend({},defaults,options);   
     }, 

     error : function(message) { 
     alert(message);    
     },   

     showSettings : function() { 
     //This bit... how to show whats in 'settings' defined in init? 
     } 

    } 

    //your plugin code here like in your post but now you can use the settings variable  we defined in your plugin 
}); 
+0

Das ist, was ich dachte, aber ich konnte einfach nicht daran zu arbeiten. Ich habe eine Pause gemacht und bin wieder dazu gekommen, danke :) – Codecraft

Verwandte Themen