2012-05-03 40 views
8

Nếu tôi muốn lưu this làm đối tượng jQuery DOM và sau đó chọn nó, phương pháp nào dưới đây tôi nên sử dụng?

var element = $(this) 

Và sau đó lựa chọn

$(element) 

Hoặc đơn giản là

var element = this 

Ngoài ra, nếu tôi muốn thì để nối element thành một chọn lớn hơn, là thế này:

$(element + " .class") 

righ t?

Trả lời

14
var element = $(this) 

Sau đó, bạn có thể sử dụng element thay vì $(this). Bạn không phải chèn element vào $() nữa.

Ví dụ: element.remove() thay vì $(this).remove()

+2

Để đạt được chỉnh sửa '$ (element +" .class ") 'với câu trả lời ở trên sử dụng' element.hasClass ("class") ' – PapaSmurf

+5

Một thực hành tốt là đặt tên cho biến của bạn bằng' '' $ '' 'thì bạn ngay lập tức biết đó là đối tượng jQuery. –

9

$this = $(this) thường là những gì mọi người làm. Ký hiệu đô la là một ký tự hợp lệ cho một tên biến, do đó, nó phục vụ như một lời nhắc nhở tốt rằng biến là một đối tượng jQuery.

Sau đó, bạn có thể sử dụng $this như bất kỳ phần tử jQuery nào. Ví dụ, $this.css('border', 'none')

+2

Nên cẩn thận với điều này, đặc biệt nếu lý do lưu trữ trong biến là tham chiếu đến nó trong ngữ cảnh khác (sự kiện nhấp chuột phụ, kết quả AJAX) trong đó '$ (this)' đề cập đến một điều gì đó khác. – yoozer8

+0

@jim, đúng vậy. Nó có thể gây nhầm lẫn khi bạn muốn tham khảo $ this bên trong một chức năng thành công AJAX hoặc một số như vậy. – CambridgeMike

+4

+1, mặc dù tôi thích sử dụng '$ that' như khi tôi sử dụng, tôi thường cần nó trong một phạm vi khác đã sử dụng một' điều này' - về cơ bản là ít bối rối. – Louis

2

var element = $(this) để lưu trữ

sau đó element lựa chọn

2

Nếu bạn muốn chọn tất cả các mục với lớp myClass, bạn nên làm:

var $this = $(this); 
var myClassElements = $(".myClass", $this); 
+0

Đây chính xác là những gì tôi làm, và thẳng thắn vượt trội (và chính xác) so với các câu trả lời khác. –

+0

@OlliM sẽ không 'myClassElements' chọn' this' bên trong 'myClass'? – ilyo

+0

Nên cẩn thận với điều này, đặc biệt nếu lý do lưu trữ nó trong một biến là tham chiếu đến nó trong một ngữ cảnh khác (sự kiện nhấp chuột phụ, kết quả AJAX) trong đó $ (this) đề cập đến một cái gì đó khác. – yoozer8

1

Đúng cách là:

var element= this.html(); 
$(element).find(div) /* from modefy div you can change it with any other selector */ 
$(element).attr({"class":"myClass","other atrribut":"it's value"}); 

Tôi hy vọng điều đó hữu ích.

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