2012-09-24 80 views
4

將上下文傳遞給選擇器時,最好通過this$(this)?我嘗試了後者,它的工作; the doc提到前者。

$('.link').on('click', function() { 
    $('.element', this).addClass('something'); 
    // or, $('.element, $(this)).addClass('something'); ? 
} 
+1

可能的重複http://stackoverflow.com/questions/1051782/jquery-this-vs-this –

+1

這取決於你正在使用'this'的上下文。如果你打算調用一個jQuery函數,'$(this).hide()'你必須使用$(this)。如果你只需要引用給定的元素,你可以使用普通的'this'。在上下文中,'$(this)'與'this'沒有區別。實際上,可能會有一些(最小的)開銷將元素轉換爲jQuery對象,然後引用包裝器中的元素。 – Aknosis

回答

4

用途:

$(this).find('.element').addClass('something'); 

$('.element', this)會變成$(this).find('.element')內部。

+0

@Aknosis爲什麼?不管你使用'this'還是'$(this)'作爲第二個參數,它都會變成'$(this).find('。element')...' – xdazz

+1

我想你是對的,我只是閱讀源代碼,它們在功能上都相當。我在考慮這個vs $(this)這個問題,但是在上下文中,它沒有任何區別。 – Aknosis

+1

來源(1.8.2): 'return this.constructor(context).find(selector);' – moey