Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Чего я не понимаю в .each() ? (https://javascript.ru/forum/jquery/31029-chego-ya-ne-ponimayu-v-each.html)

LittlePony 23.08.2012 19:40

Чего я не понимаю в .each() ?
 
$(this.el).find("section.screen").each(function(){
			var $this = $(this)
…
			if($this.is("#control")) newHeight -= 60
			$this.height(newHeight)
		})


здесь перебираются все элементы, удовлетворяющие селектору "section.screen", и им всем задаётся хитро рассчитанная высота.
По задумке нужно одному из этих элементов ("#control") высоту уменьшить на 60px, что я пытаюсь сделать строкой if($this.is("#control")) newHeight -= 60.
Происходит не то, что я ожидаю. высота уменьшается на 60px у всех элементов, хотя id="control" определённо только у одного.
Чего я недопонимаю в принципах работы этой конструкции?

Deff 23.08.2012 21:00

$(this.el).find("section.screen").each(function(){



	if($(this).attr("id")=='control') {
	  $(this).height($(this).height()-60);
	 return false;
	}

})

LittlePony 23.08.2012 23:33

Deff, зачем?
Ведь return false прервёт цикл, а это не нужно.

devote 23.08.2012 23:41

$(this.el).find("section.screen#control").height(newHeight);

nerv_ 23.08.2012 23:42

Квери "знаю" слабо, но почему бы это
$(this.el).find("section.screen")

не заменить на это
$( "section.screen", this.el ).each( function( index, elem ) {

где elem - элемент из набора.

p.s.: а, вообще, devote, постом выше прав :)

devote 23.08.2012 23:43

Цитата:

Сообщение от nerv_
но почему бы это

да собственно разницы никакой нет, что первый, что второй вариант одинаково вызывают find

nerv_ 23.08.2012 23:46

Цитата:

Сообщение от devote
да собственно разницы никакой нет

меньше букв )

devote 23.08.2012 23:46

Цитата:

Сообщение от nerv_
меньше букв )

ну если только)

Deff 23.08.2012 23:53

Цитата:

Сообщение от LittlePony
Ведь return false прервёт цикл, а это не нужно.

:) Ну я не наю как Вам надо - Собственно я нашел элемент - второго ID - нет - сам сказал - нафег далее циклить ?

LittlePony 24.08.2012 00:31

Цитата:

Сообщение от Deff (Сообщение 200141)
:) Ну я не наю как Вам надо - Собственно я нашел элемент - второго ID - нет - сам сказал - нафег далее циклить ?

На самом деле в этом цикле много чего происходит, просто всё несущественное для этого вопроса вырезано из кода. Цикл должен полностью пройти, выходить из него не надо.

LittlePony 24.08.2012 00:35

ох. А сейчас пробую — и отрабатывает всё так, как ожидалось. А всё, что изменилось с тех пор, это поменялось значение, на которое нужно изменить высоту одного из блоков.
Видимо что-то я где-то упускаю, и пока совсем не понимаю, что именно, возможно и не в этом участке кода даже.


Часовой пояс GMT +3, время: 05:27.