2012-05-03 3 views
8

Если я хочу сохранить this как объект DOM jQuery и затем выбрать его, какой метод следует использовать ниже?

var element = $(this) 

А затем для выбора

$(element) 

или просто

var element = this 

Кроме того, если я хочу, чтобы потом конкатенации element в больший селектор, заключается в следующем:

$(element + " .class") 

the righ t way?

ответ

14
var element = $(this) 

Затем вы можете использовать element вместо $(this). Вам больше не нужно вставлять element в $().

Например: element.remove() вместо $(this).remove()

+2

Чтобы добиться редактирования '$ (element +" .class ") 'с приведенным ответом используйте' element.hasClass («class») ' – PapaSmurf

+5

Хорошей практикой является называть ваши переменные' '' '' '' ', и вы сразу же знаете, что это объект jQuery. –

9

$this = $(this) обычно то, что люди делают. Знак доллара является допустимым символом для имени переменной, поэтому он служит хорошим напоминанием о том, что переменная является объектом jQuery.

Вы можете использовать $this, как и любой элемент jQuery. Например, $this.css('border', 'none')

+2

Следует быть осторожным с этим, особенно если причина его хранения в переменной - ссылаться на него в другом контексте (событие вторичного клика, результат AJAX), где '$ (this)' относится к чему-то другому. – yoozer8

+0

@jim, true. Это может запутать, когда вы хотите ссылаться на $ this внутри функции успеха AJAX или некоторых таких. – CambridgeMike

+4

+1, хотя я предпочитаю использовать '$ that', поскольку, когда я использую это, мне обычно это нужно в другой области, которая уже использует другое' this' - в основном, чтобы быть менее запутанным. – Louis

2

Если вы хотите, чтобы выбрать все элементы с классом MyClass, вы должны сделать:

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

Это именно то, что я делаю, и откровенно превосхожу (и правильно) по сравнению с другими ответами. –

+0

@OlliM не будет 'myClassElements' выбрать' this' внутри 'myClass'? – ilyo

+0

Следует быть осторожным с этим, особенно если причиной его хранения в переменной является ссылка на него в другом контексте (событие вторичного клика, результат AJAX), где $ (this) относится к чему-то другому. – yoozer8

1

Правильный путь:

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"}); 

Я надеюсь, что это полезно.