Предположим, что у меня есть следующий пример:
Пример 1
$('.my_Selector_Selected_More_Than_One_Element').each(function() {
$(this).stuff();
$(this).moreStuff();
$(this).otherStuff();
$(this).herStuff();
$(this).myStuff();
$(this).theirStuff();
$(this).children().each(function(){
howMuchStuff();
});
$(this).tooMuchStuff();
// Plus just some regular stuff
$(this).css('display','none');
$(this).css('font-weight','bold');
$(this).has('.hisBabiesStuff').css('color','light blue');
$(this).has('.herBabiesStuff').css('color','pink');
}
Теперь это может быть:
Пример 2
$('.my_Selector_Selected_More_Than_One_Element').each(function() {
$this = $(this);
$this.stuff();
$this.moreStuff();
$this.otherStuff();
$this.herStuff();
$this.myStuff();
$this.theirStuff();
$this.children().each(function(){
howMuchStuff();
});
$this.tooMuchStuff();
// Plus just some regular stuff
$this.css('display','none');
$this.css('font-weight','bold');
$this.has('.hisBabiesStuff').css('color','light blue');
$this.has('.herBabiesStuff').css('color','pink');
}
Точка - это не фактический код, а использование $(this)
, когда оно используется более одного раза/два раза/три раза или более.
Мне лучше работать с использованием примера два, чем пример один (может быть, с объяснением почему или почему нет)?
EDIT/NOTE
Я подозреваю, что два лучше одного; то, что я немного боялся, наносил мой код с помощью $this
и непреднамеренно вводил потенциально сложную ошибку, когда я неизбежно забывал добавить $this
к обработчику событий. Так что я должен использовать var $this = $(this)
или $this = $(this)
для этого?
Спасибо!
ИЗМЕНИТЬ
Как указывает Скотт, это считается кешированием в jQuery.
http://jquery-howto.blogspot.com/2008/12/caching-in-jquery.html
Джаред