Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   container : body (https://javascript.ru/forum/css-html/50384-container-body.html)

serrrgggeee 24.09.2014 09:34

container : body
 
здравствуйте не могу понять что здесь происходит
вот создается объект
getObject = {
					container: 'body', // container of gallery
					transformClasses: '.scale100, .scale90, .scale80, .scale70, .scale60',
					clickableClasses: '.scale100',
					rightSideClass: '.rightSide', // class for right side items
					leftSideClass: '.leftSide',  // class for left side items
					cssProperty: 'marginLeft', // css property for changing (use marginTop, marginLeft, etc)
					itemOffset: 100, // offset of $items
					itemOffsetCenter: 0, // offset from center item 
					useCSS3Animation: true, // use css3 or jquery animation
					autoplay: {}, // autoplay parameters 
					reflections: {}, // reflections of images
					pagination: {}, // pagination for items
					next: '.nextButton', // next button selector
					prev: '.prevButton', // prev button selector


а вот как я понял в переменные загоняются кнопки
$prev = $(getObject.prev, $container[0]), // prevoius button
								$next = $(getObject.next, $container[0]), // next button

только не пойму что здесь дает вот это $container[0] тем более в эту переменную был помещен body, а какой у body может быть первый элемент.

krasovsky 24.09.2014 11:33

$prev = $(getObject.prev, $container[0])
Тут идет поиск элементов .prevButton находящихся в элементе $container[0]. Если $container[0] это body значит ищут все .prevButton в body

serrrgggeee 24.09.2014 11:53

а зачем именно так
$container[0]
можно же просто так
$container
он же один и присваивание происходило вот как
$container = body
и зачем вообще писать поиск в body если это и так верхний элемент я понимаю если бы поиск осуществлялся в каком то диве?

krasovsky 24.09.2014 12:32

$container = $('body');
вызывая $container мы получаем объект jquery, с которым дольше можно работать методами jq, а не сам элемент.
вызывая $container[0] мы получаем сам элемент,в данном случае Body, с которым можно работать методами нативного js.

$(getObject.prev, $container[0]) - в данном случае видимо автор наивно полагал, что нужно обязательно передать строку: в обычной записи это выглядело бы так: $('.prevButton','body'), хотя мир бы не рухнул если бы он записал и так $(getObject.prev, $container)

Цитата:

Сообщение от serrrgggeee
и зачем вообще писать поиск в body если это и так верхний элемент я понимаю если бы поиск осуществлялся в каком то диве?

Не знаю

serrrgggeee 24.09.2014 12:47

а вот еще не знаю можно в этой теме, есть такой код
function init(){
							// set length
							length = (length % 2 === 0) ? (length-1) : length;

							// hide last item, if length of $items is even
							($items.length > length) && ($items.eq(length).css('display','none'));

							// fill order items array
							for (var i=0;i<length;i++){
								itemsOrder.push(i);
							}

							// set reflections
							getObject.reflections = $.extend(reflectionsDefaults, o.reflections);
							getObject.reflections.enable&&createReflections();

							// set autoplay
							getObject.autoplay = $.extend(autoplayDefaults, o.autoplay);
							getObject.autoplay.enable&&stopAutoplay();

							// set order for items
							setOrder();

							// pagination 
							paginationInit();

							var autoplayEnable = getObject.autoplay.enable;
							// listeners
							$this
								.on({
									showGallery: function(e){
										if (!galleryActive){	
											getObject.onShowActions();	
											setListeners(galleryActive = true);
										}
									},
									hideGallery: function(e){
										if (galleryActive){	
											getObject.onHideActions();								
											getObject.autoPlayState = false;
											setListeners(galleryActive = false);
										}
									}})
								.trigger('showGallery')
								// .trigger('goto', '0')
								.on('firstAction', firstAction);

							// on keydown event, event always on 
							$doc.on('keydown', keyboardEvents);

							// check autoplay
							if (autoplayEnable) {
								getObject.autoplay.enable = true;
								startAutoplay();
							}
						}

все понятно
я хотел спросить в общем есть такой участок он срабатывает при срабатывании функции showGallery
$this
								.on({
									showGallery: function(e){
										if (!galleryActive){	
											getObject.onShowActions();	
											setListeners(galleryActive = true);
										}
									},
									hideGallery: function(e){
										if (galleryActive){	
											getObject.onHideActions();								
											getObject.autoPlayState = false;
											setListeners(galleryActive = false);
										}
									}})

просто как я понимаю код работает последовательно то есть если функция вызвана кодом то она выполняется, а если например функция уже выполняется и сработал он клик получется функция прерывается и идет до того участка функции где действие на онклик? и еще в функции есть аргумент "е" он как я понял не обязательный?

krasovsky 25.09.2014 08:42

насчет .on() - таким образом тут на элемент $this навешаны обработчики showGallery и hideGallery, и никакого клика я тут не вижу. Так что при клике не будет ничего, тем более даже если бы был навешан клик и кликнуть два раза ничего не прервется а выполнится 2 раза.
е - обязательный аргумент только тот который будешь использовать.


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