2011-08-29 47 views
16

我在讀http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery。並且在這兩個代碼段中使用了this

 $(document).ready(function() { 
     $("#orderedlist").find("li").each(function(i) { 
     $(this).append(" BAM! " + i); 
     }); 
    }); 

    $(document).ready(function() { 
     // use this to reset several forms at once 
     $("#reset").click(function() { 
     $("form").each(function() { 
     this.reset(); 
     }); 
    }); 
    }); 

時候我們需要$(this)this?他們之間有什麼區別?提前致謝。

+3

可能的重複[有什麼區別「this」,「$ this」和「$(this)」?](http://stackoverflow.com/questions/3889570/what-is-the-difference-在這個這個和這個之間) – user113716

+1

@patrick:我不認爲它是重複的。值得回答的是,爲什麼在這個特定代碼的一部分中需要'$(this)',而在另一部分中需要'this'。 – Blazemonger

+1

@ mblase75:呃,我想我不同意。這個答案,加上本教程已經解釋的內容,使其成爲重複。閱讀另一個問題的答案應該可以解決這個問題。從教程:*「請注意,在'.each()'函數中,'this'指的是實際的元素。」* – user113716

回答

16

this引用DOM元素本身; $(this)將元素包裝在一個jQuery對象中。

在第一個示例中,您需要$(this),因爲.append()是一種jQuery方法。

在第二個示例中,reset()是一種JavaScript方法,因此不需要jQuery包裝器。

7

this本身就是一個普通的對象。

$(this)需要this並添加了jQuery包裝器,以便您可以在對象中使用jQuery方法。

3

this引用一個DOM對象。所以reset()是一個表單DOM對象的函數。另一方面,append()是一個jQuery方法,所以它必須由jQuery對象調用,因此$(this)

當您將this$環繞時,會得到一個代表該DOM對象的jQuery對象。

2

一般在jQuery的,this將是有問題的DOM元素的一個實例,並$(this)周圍建立一個this jQuery對象,讓你平時的jQuery方法一樣each()val()

1

如果您在同一行代碼中使用jquery函數執行操作,則只需要$(this)。

ex: $(this).find(...); $(this).val(); etc 

否則你只需要this

相關問題