2012-09-17 85 views
0

我不知道如何將$(this)的值存儲在變量中以用於其他函數。

在這個例子中,我想點擊的div元素的引用:

function doSomething(thisVar) { 
// do stuff with thisVar 
} 

$("div.someClass").click(function() { 
    var myThisVariable = $(this); 
    doSomething(myThisVariable); 
}); 

它不工作(變成空引用)。什麼是適當的jQuery語法?

編輯:這個錯誤下來給我混淆的this不同實例。它表明你需要特別注意在每種情況下this的真正含義。

+7

你是如何使用「thisVar」?只需做一個簡單的thisVar.hide();你會看到它是否有效,並確保檢查你是否有任何JavaScript錯誤。 – Alex

+0

@Alex:我打算像使用'$(this)'一樣使用它。由於'$(this)'在其他函數中會有其他意義,所以我需要以某種方式存儲它。 – Gruber

+0

此外,對於將來的問題,請記住,「它不起作用」並不意味着什麼,人們會問你什麼,以及如何不起作用。 – lanzz

回答

3

This works for me.你的問題很可能是在其他地方。

這是正確的jQuery方式來做到這一點。開發人員經常將$(this)的值保存到全局文件self(或$self)中,以便在上下文以及this的值發生更改時進行訪問。將它作爲屬性傳遞幾乎是一回事。

+0

感謝您設置我的頭。感謝大家的評論,我不得不重新評估錯誤,並開始尋找其他問題,並確實發現了問題。 – Gruber

1

嘗試下列

function doSomething(thisVar) { 
// do stuff with thisVar 
    $('#' + thisVar) // selects the id 
    $('.' + thisVar) // selects the class 

} 

$("div.someClass").click(function() { 
    var myThisVariable1 = $(this).attr('id'); //saves the current element id 
    var myThisVariable2 = $(this).attr('class'); //saves the current element class 
    doSomething(myThisVariable); 
}); 

希望它能幫助:)(希望我理解這個問題)