Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2015, 23:42
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

метод position
Здравствуйте, подскажите пожалуйста как при помощи метода position задавать позицию элемента на странице?
допустим у меня есть массив объектов
defaultCoords []
в котором хранятся объекты

defaultCoords[i] = {
    pos_x :"pos_x",
   pos_y :"pos_y"
}

в какой то момент каждому элементу из некоторой выборки я хочу назначить позицию на странице вешаю обработчик на кнопку


$('#join').on('click.joinMyFigure', function() {
	        		

	        		$('.segment').each(function(indx,s){
	        			var e=$(s);
	        			
	        			
	        			e.position({left: defaultCoords[indx].pos_x,top: defaultCoords[indx].pos_y });
	        			
	        		});
	        	});

и.. ничего не происходит при нажатии позиция элементам не назначается. Почему?

Последний раз редактировалось Moloch, 25.04.2015 в 23:44.
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2015, 23:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Moloch,
defaultCoords[indx]["pos_x"]
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2015, 10:58
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

неа . все равно не происходит ничего
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2015, 11:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Moloch,
Сообщение от Moloch
e.position
position только для чтения -- используйте css
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  .segment {
    background: #FFCC00;
    width: 100px;
    height: 100px;
    position: absolute;
  }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
 $(function() {
    var defaultCoords = [{
        pos_x: 10,
        pos_y: 20
    }, {
        pos_x: 30,
        pos_y: 40
    }];
    $(".segment").each(function(indx, s) {
        var e = $(s);
        e.css({
            left: defaultCoords[indx]["pos_x"],
            top: defaultCoords[indx]["pos_y"]
        })
    })
});
  </script>
</head>

<body>
<div class="segment">1</div>
<div class="segment">2</div>
</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2015, 11:37
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

Я использую UI и если для left и top я буду использовать css то координаты будут заданы не так как мне нужно вот на картинке пример того что получается. я конечно решил проблему обнулением css-ных top и left , но если я например захочу чтобы при нажатии кнопки блоки рандомно принимали координаты из заданного диапазона то мне не получится подружить" position.left и left
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2015, 11:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Moloch,
почему position тогда а не offset-- замените тогда не на css а на offset
Ответить с цитированием
  #7 (permalink)  
Старый 26.04.2015, 11:56
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

Кстати! все получилось. Спасибо Вам. че я сразу не подумал так сделать
Ответить с цитированием
  #8 (permalink)  
Старый 26.04.2015, 12:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Moloch,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  .segment {
    background: #FFCC00;
    width: 100px;
    height: 100px;
    position:  relative;
    float: left;
  }

  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
 $(function() {
    var defaultCoords = [], rand = function() {
    return Math.floor(Math.random() * 200) + 10;
};
    $(".segment").each(function(indx, s) {
        var e = $(s).offset();
        defaultCoords[indx] = {"pos_x" : e.left, "pos_y" : e.top}
     }).css({"position" : "absolute"}).each(function(indx, s) {
        var e = $(s);
        e.offset({
            left: rand(),
            top: rand()
        })
    })
    function animR()
    {
       $(".segment").each(function(indx, s) {
        var e = $(s);
        e.animate({
            left: defaultCoords[indx]["pos_x"],
            top: defaultCoords[indx]["pos_y"]
        })
    })
    }
    window.setTimeout(animR, 2000)
});
  </script>
</head>

<body>
<div class="segment">1</div>
<div class="segment">2</div>
</body>

</html>
Ответить с цитированием
  #9 (permalink)  
Старый 26.04.2015, 12:42
Аспирант
Отправить личное сообщение для Moloch Посмотреть профиль Найти все сообщения от Moloch
 
Регистрация: 29.10.2013
Сообщений: 94

с position:absolute вообще все печально становится =( Вот код
<div id="wrapper">
		<div class="container">
		   
		</div>
		 <p><button id="dissect">Разрезать картинку</button></p>
		 <p><button id="join">Собрать картинку</button></p>
	</div>
	<div class="coord">
		<span class="number">1</span>
		<span class="x">2</span>
		<span class="y">3</span>
	</div>

<style type="text/css">
 	.container+p {
 		clear: both;
 	}
 	.container {
 		background: url('1.png') no-repeat;
 		width: 646px;
 		height: 909px;
 		background-size:contain;
 		position: relative;
 	}
 	.coord span {
 		display: block;
 		font-size: 1.5em;
 	}
 	</style>


$(function(){

		var defaultCoords = [];
		function dissectMyFigure (num) {
			   	var el = $('.container');
			   	for (var i =0;i < num;i++) {
			   		el.append('<div class = "segment"></div>')
			   	}
			   	var segment = $('.segment');
			   	segment.css({'border':'1px solid black','float':'left','box-sizing':'border-box','background-image':'url("1.png")', 'overflow':'hidden'});

			   	//segment.draggable();
			   	
			   	segment.width(function(i,w){
			   			w = el.width()/num*3;
			   			return w;
			   		});
			   		
			   	segment.height(function(i,h){
			   			h = el.height()/num*3;
			   			return h;
			   		});

			   	el.css({'background':'transparent'});

			   	segment.each(function(indx,self){
			   	 	elm=$(self);
			   	 	var pos_x=elm.position().left;
			   	 	var pos_y=elm.position().top;
			   	 	defaultCoords[indx] = {pos_x :pos_x,pos_y :pos_y};
			   	 	elm.css({'background-position-x':'-'+pos_x+'px','background-position-y':'-'+pos_y+'px',})
			   	 	//console.log('для '+indx+'элемента'+'x :'+pos_x+', y :'+pos_y);
			   	 	
			   	 	elm.draggable({
			   	 		start: function () {
			   	 			$('.number').text('сегмент под номером: '+indx);
			   	 		},

				        drag: function() {
				            $('.x').text("По Х: "+$(this).offset().left);
				            $('.y').text("По У: "+$(this).offset().top);
				        }
			   	 	//console.log('координаты '+indx+' элемента по Х '+ elm.position().left +'по У'+elm.position().top);
			   		});
			   	 });
			};

			   $('#dissect').on('click.dissectMyFigure', function() {
	        		dissectMyFigure(9);
	        	});
			   $('#join').on('click.joinMyFigure', function() {
	        		

	        		$('.segment').each(function(indx,s){
	        			var e=$(s);
	        			//e.draggable("destroy");
	        			e.animate({
	        				left:defaultCoords[indx]["pos_x"],
	        				top:defaultCoords[indx]["pos_y"]
	        			},2000, function(){
	        				e.remove();
	        				$('.container').css('background-image','url("1.png")');
	        			});
	        			//e.css({'left':defaultCoords[indx]["pos_x"]+'px','top':defaultCoords[indx]["pos_y"]+'px'});
	        			//e.offset({left: defaultCoords[indx]["pos_x"],top: defaultCoords[indx]["pos_y"] });
	        			
	        		});
	        	});
			
	 	});

Последний раз редактировалось Moloch, 26.04.2015 в 12:45.
Ответить с цитированием
  #10 (permalink)  
Старый 26.04.2015, 12:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Moloch,
можно весь макет сразу а не по блочно?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разметка для Google closure compiler monolithed Оффтопик 11 04.09.2013 00:50
Оцените, пожалуйста код вёрстки OlegALL Ваши сайты и скрипты 18 26.07.2011 09:35
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Общие вопросы Javascript 1 13.04.2011 22:09
Объект не поддерживает это свойство или метод load_081112_0953.js 1auto1 Internet Explorer 1 13.04.2011 21:59
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29