我不認爲我是第一個遇到這個問題,但我沒有找到一種方法來搜索這個沒有得到與這個問題無關的結果。jQuery全局選擇「緩存」
我採用的「緩存」重複的jQuery選擇不那麼擴展好的做法到像var element = $('#element');
瓦爾防止「DOM庫搜索」,每重複使用的元素
我遇到的問題是,現在我正在做一個函數內的緩存。喜歡的東西:
function functionname (id) {
var id = $('#'+id);
//extra stuff
}
我不是專家在變量的範圍,但我不能夠做
functionname ('some-div-id');
some-div-id.dialog('open');
所以我敢肯定這是因爲在函數內部創建的變量不在函數本身之外可訪問。
於是我想出了
function functionname (id) {
window.id = $('#'+id);
//extra stuff
}
,但如果我嘗試做window.some-div-id.dialog('open');
我得到TypeError: 'undefined' is not a function
我缺少什麼?我相信這是一個小小的愚蠢的東西,但我錯過了它,就在我眼前。
感謝
編輯
謝謝大家,但你失去了一些東西。 代碼建議缺少內部「全局」變量名稱是動態的事實:
var CACHEobject = {};
function doSomething (NAMEHERE) { //note the function parameter
CACHEobject.NAMEHERE = $('#'+NAMEHERE);
}
所以這個想法是該函數創建一個與#element_id同名的javascript變量。如果我通過一個名稱的功能應該與名稱選擇HTML標識和名稱相同的「緩存它」到一個全局變量:
doSomething('myDialogOne'); doSomething('myDialogTwo');
,所以我以後可以做
CACHEobject.myDialogOne.dialog('open'); CACHEobject.myBox.dialog('close');
最後!我知道這並不複雜,我錯過了[東西]。感謝@mikeycgto – Juan