2012-05-27 68 views
0

我使用的一個插件,它一般具有代碼是這樣的:我如何在插件中調用此函數?

(function ($) { 

    $.fn.makeEditable = function (options) { 
     function _fnGetRowIDFromAttribute(row) { 
      return "foo"; 
     } 

     return this.each(function() { 
      //some code 
     }); 
    }; 
})(jQuery); 

如何調用外部插件即_fnGetRowIDFromAttribute我的網頁上?

+0

你不能,這就是使它成爲插件的一部分 - 它是封裝的,不是函數的公共返回值的一部分。 – Interrobang

+0

因此,任何解決方法?我有插件代碼。我怎樣才能讓它成爲公衆號召的一部分? –

+0

在全局範圍內複製函數。複製粘貼作業。 – Interrobang

回答

2

如果你想讓你的函數可以從全局範圍訪問並且尊重jQuery約定,你應該在jQuery對象中對它進行處理。

(function ($) { 
    $._fnGetRowIDFromAttribute = function(row) { 
     return "foo"; 
    } 

    $.fn.makeEditable = function (options) { 
     return this.each(function() { 
      //some code 
     }); 
    }; 
})(jQuery); 

或者你可以把它放在一個命名空間:

(function ($) { 
    $.myModule = $.myModule || {}; 
    $.myModule._fnGetRowIDFromAttribute = function(row) { 
     return "foo"; 
    } 

    $.fn.makeEditable = function (options) { 
     return this.each(function() { 
      //some code 
     }); 
    }; 
})(jQuery); 

另一句話:如果你的函數不使用的$ .fn.makeEditable的範圍的話,沒有理由重新定義它每次調用$ .fn.makeEditable。你可以在用於指定jQuery插件的直接函數中定義它。

最後但並非最不重要的,一個變量或與它的功能與下劃線開始是傳統的方式來告訴它的私人,不應該從外部調用的名稱。所以你應該考慮改變它的名字。

1

如果你想從外部訪問,則需要更換這行:

function _fnGetRowIDFromAttribute(row) { 

這一行:

_fnGetRowIDFromAttribute = function(row) { 

這增加了在全球範圍內的功能;您還可以在模塊塊外定義該功能。