2010-09-03 40 views
55

là gì khác biệt cơ bản giữa việc sử dụng $ (this) vs này

$('.viewComments').click(function(ev){ 
    //returns the desired value 
    alert(this.getAttribute('id')); 

    //Gives an error sayin function is not defined 
    alert($(this).getAttribute('id')); 

    //returns the desired value 
    alert($(this).attr('id')); 
}); 

gì tôi nghĩ là "$ (this)" sẽ chứa tất cả các chức năng mà "này "có và nhiều hơn nữa .. Nhưng đó không phải là trường hợp.

Vậy chính xác $ là gì (this)? và

Tôi có biết chức năng nào có sẵn khi tôi đang sử dụng không? (Tôi biết tôi có thể lấy chúng qua con bọ lửa. Nhưng tôi muốn biết nếu có cách nào khác- một số tài liệu có thể)

+0

trùng lặp có thể xảy ra [Tại sao tôi phải sử dụng $ (this)] (http://stackoverflow.com/questions/3316113/why-do-i- có thể sử dụng) – jAndy

Trả lời

123

this là đối tượng DOM, trong khi $(this) là trình bao bọc jQuery giống nhau.

Khi sử dụng this, bạn có thể gọi các phương thức DOM trên đó chứ không phải phương thức jQuery. Khi sử dụng $(this), bạn có thể gọi các phương thức jQuery trên nó, chứ không phải phương thức DOM.

+8

Rất rõ ràng và ngắn gọn, câu trả lời tuyệt vời. – Ender

+3

+1 cho độ chính xác và tính đồng nhất –

+0

Vì vậy, nó là thuận lợi hơn hoặc một thực hành tốt nhất để sử dụng $ (này) hơn này trong mã jquery của tôi? –

1

$ (this) là đối tượng hiện tại được chọn bằng bộ chọn jQuery hoặc sự kiện được đính kèm cho đối tượng.

vì vậy nếu bạn có $('#myelement').click(..... thì $(this) tham chiếu đến phần tử được nhấp vào để $(this).hide() ẩn phần tử đó.

7

$ (này) - đại diện cho phần tử DOM hiện hành về mà sự kiện chức năng này được gọi là

Các từ khóa này - Trong JavaScript này luôn đề cập đến “chủ sở hữu” của hàm chúng ta đang thực hiện, hay đúng hơn, với đối tượng mà một hàm là một phương thức.

+0

Nó giúp lưu ý rằng '$ (this)' đại diện cho phần tử DOM được bao bọc như một đối tượng jQuery * vì * và * khi * 'this' đề cập đến phần tử DOM như một đối tượng DOM API gốc –

0

trong jQuery ký hiệu $() là viết tắt của bộ chọn jQuery, vì vậy nếu bạn nói $ (this) bạn đang yêu cầu jQuery chọn lại đối tượng của bạn. Sau đó, bạn có sẵn các hàm jQuery thông thường. "this" là đối tượng được chọn bởi cuộc gọi jQuery bên ngoài.

3

Trong jQuery, điều này liên quan đến các đối tượng DOM, và $(this) đề cập đến cùng một đối tượng nhưng với các phương thức jQuery đã thêm

bạn không thể gọi this.each() vì mỗi phương thức không phải là phương thức DOM, phương thức jquery của nó là

bạn có thể gọi $(this).each()$(this) trả về một đối tượng jquery

Các vấn đề liên quan