2010-12-19 16 views
0

Mein erster Ausflug ins Schreiben von jQuery-Funktionen.Jquery Bereich Frage

Ich habe diese Funktion, aber ich bin mir nicht sicher, warum die Überlagerung var außerhalb des Bereichs der Klickfunktion sein muss. Ich habe es versucht, aber es funktioniert nicht richtig. Kann ich das umgestalten, um es besser zu machen?

(function($) { 
    $.fn.popOver = function() { 

    // Variable for overlay 
    var overlay = $("<div id='overlay'></div>"); 

    // Listen for clicks 
    return this.click(function(e) { 

     // Prevent the anchor link from loading 
     e.preventDefault(); 

     // Variable for popover 
     var popover = $(this).next(); 

     // Append the overlay to the document body 
     $('body').append(overlay.click(function() { 
     overlayHide(); 
     })) 

     //Set the css and fade in our overlay 
     overlay.show(); 
     popover.fadeIn(150); 

     // Listen for clicks on elements 
     popover.find('a').click(function() { 
     overlayHide(); 
     }) 

     // Hide Overlay function 
     function overlayHide() { 
     overlay.remove(); 
     popover.fadeOut(150); 
     } 

    }) 
    } 
}) (jQuery); 
+0

Bessere Mittel kürzer? Haben Sie Probleme mit diesem Code? –

+2

Es wäre schön, wenn Sie Ihre inneren Funktionen für bessere Lesbarkeit einrücken könnten. – deceze

+0

@deceze Richtig, die fehlende Einrückung hat mich dazu gebracht, den '' 'klick()' Handler zu verpassen :( – alex

Antwort

1

Weil Sie nicht spezifischer als einfach, dass andere Funktion aufrufen etwas zu tun, können Sie Zeilen wie diese ändern ...

popover.find('a').click(overlayHide);