jquery plugin public function

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • jquery plugin public function

    hi,
    ich will ein jquery plugin bauen, welches mir public functionen anbietet.
    also ein zugriff in der Art:
    PHP-Code:
    var myPlugin =  $('#wrapper').myPlugin();
    myPlugin.bar() 
    Habe diese Artikel als vorlage genommen:
    ajax - Public functions from within a jQuery plugin - Stack Overflow
    Expanding the jQuery Plugin Development Pattern Scriptble

    hier mal mein Code:
    plugin:
    PHP-Code:
    (function($){  
        var 
    defaultOptions = {  
            
    action:       false,  
            
    debug:        false  
        
    }   
        $.fn.
    myPlugin = function(options){  
            
    // extend default options with overrides  
            
    var private_var "private var";
            var 
    opts = $.extend({}, defaultOptionsoptions);  
              return 
    this.each(function() {
                  
    private_function();
                  
              });    
        }
        var 
    private_function = function() {
            
    alert('private_function');
        };
           
    // public methods        
        
    this.bar = function() {//TypeError: 'undefined' is not a function (evaluating 'myPlugin.bar()')
            
    alert('in bar');
        }; 
        $.fn.
    myPlugin.foo = function() {
            
    alert('in foo');
        }
    })(
    jQuery); 
    und der Aufruf:
    PHP-Code:
    var myPlugin =  $('#wrapper').myPlugin();
    $.fn.
    myPlugin.foo();
    myPlugin.bar();//TypeError: 'undefined' is not a function (evaluating 'myPlugin.bar()') 
    da ist mein Problem ja schon ersichtlich:
    myPlugin.bar();//TypeError: 'undefined' is not a function (evaluating 'myPlugin.bar()')

    $.fn.myPlugin.foo(); funktioniert zwar, aber damit greife ich ja das plugin zu.

    aber wenn ich 2 instanzen erzeugen will:
    var myPlugin1 = $('#wrapper').myPlugin();
    var myPlugin2 = $('#was_anderes').myPlugin();

    bringt mir $.fn.myPlugin.foo(); ja nichts,
    ich will ja per
    myPlugin1.bar();
    myPlugin2.bar();

    kann mir jemand meinen (Denk-)Fehler aufzeigen?
    lg & THX
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    Dafür gibt's unterschiedliche Lösungen. Man lese für den Anfang mal:
    javascript - How to create a jQuery plugin with methods? - Stack Overflow

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar

    Lädt...
    X