2012-08-12 47 views
0

提供給我一個js/css模板。 它在交互事件處理中非常有才華,但我不是js/jquery的天才。JQuery函數調用不在上下文中

在其JS庫,有一個.js文件, 和文件有像一些代碼:

(function ($) { 
... 
})(jQuery); 

大部分的事情發生在它。

在這個上面的函數中有一些「小獨立函數」。

而這個上層/包裝/非命名函數中的某些行稱爲這些「小獨立函數」。

此外,我想稱這些「小獨立功能」,但我無法找出如何。

因爲在「(function ($) {...})(jQuery);」這些行中稱這些「小獨立函數」有一些局部變量。

我覺得有些代碼幫我告訴:

(function ($) { 

if(...){ 
var items; 

addItem(items) 
} 

function addItem(funcitems){} 
... 
})(jQuery); 

我的問題是,我怎麼能叫的AddItem,我怎樣才能通過「項目」到了嗎?

我想在自定義事件後在頁面的自定義部分調用它。

+0

如果您發佈一個鏈接到實際的圖書館,我可能會給你一個更好的答案。 – jli 2012-08-12 16:50:14

回答

0

你有兩種選擇來實現這一目標:

1)添加您的代碼到這個匿名功能,讓你的代碼是在同一範圍內這樣的封裝功能。 (不太好,因爲你是在妥協圖書館)

2)做一個變量賦值,並添加一個返回語句與你需要的函數:(更好,因爲你不混合庫代碼與你自己,只是暴露少數的功能)

var extLib = (function ($) { 
    ... 
    return{ 
     /* return the functions you need - written in object literal notation */ 
     addItem : addItem 
     /*[,exposedName : internalName] */ 
    } 
})(jQuery); 

現在,您可以通過調用extLib.addItem(item)訪問addItem功能。

+0

謝謝。你的意思是我可以使用「item」變量的值在整個代碼運行時?主要的問題是在主包裝中使用「item」變量及其值(函數($))?可能嗎?例如「item」是一個數組,我想添加到「該數組」。提前感謝閱讀和耐心。 – merveotesi 2012-08-12 18:27:00

+0

我並沒有完全理解你的評論意思。你可以訪問'addItem()'和'addItem()'訪問同一範圍內的所有變量。所以你不能直接訪問'items','addItem()'可以。 – Christoph 2012-08-12 21:23:10

+0

謝謝,現在好了。 – merveotesi 2012-08-13 10:20:45

1

因爲它們沒有以任何方式暴露,所以沒有一些瘋狂的js黑客或編輯代碼是不可能的。如果你確定圖書館沒有公開等價的方法,那麼唯一真正的解決方案就是編輯它。

相關問題