jquery
2010-12-19 237 views 0 likes 
0

我第一次寫入jQuery函數。Jquery範圍問題

我有這個功能,但我不知道爲什麼overlay var必須超出click函數的範圍。我在內部嘗試過,但它不正確。我可以重構這個以使它更好嗎?

(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

更好的手段更短?這個代碼有沒有問題? – 2010-12-19 00:15:52

+2

如果你可以縮進你的內部函數以獲得更好的可讀性,那將會很好。 – deceze 2010-12-19 00:16:50

+0

@deceze沒錯,缺少縮進讓我錯過了主要的'click()'處理器:( – alex 2010-12-19 00:18:37

回答

1

因爲你沒有做任何事情比簡單地調用其他的功能,你可以改變這樣的線條更具體的...

popover.find('a').click(overlayHide); 
相關問題