Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Свойства Top и его определение! (https://javascript.ru/forum/jquery/16794-svojjstva-top-i-ego-opredelenie.html)

0931454574 22.04.2011 12:55

Свойства Top и его определение!
 
$("div").text($("#book").attr("alt"));

<img  id="book" src="fiesta/lightbox2/images/image-1.jpg" width="90" height="66" alt="gert" />
<div id="pole">
</div>


Короче говоря свойство Alt добавляется , а вот TOP ни в какую , с чем это связано. Нужно узнать положение элемента в любой момент времени при вызове функции, как узнать?

0931454574 22.04.2011 12:56

Добавляется в смысле значение заносится в div в виде текста.

Serg_pnz 22.04.2011 13:01

-- Вы, наверное, хорошо стреляете?
-- Подходяще, -- ответил Азазелло.
-- А на сколько шагов? -- задала Маргарита Азазелло не совсем ясный вопрос.
-- Во что, смотря по тому, -- резонно ответил Азазелло.

0931454574 22.04.2011 13:02

$('#book').attr("top",function(arr){ $("div").text(arr);});

Такой вариант все время показывает 0, хотя элемент перемещался!

В arr заносится значение top , а не тут то было! Ема е!

0931454574 22.04.2011 13:15

Как узнать значение css top.?

0931454574 22.04.2011 13:27

function printing()
  { 
  	 var top=0, left=0;
	 top = $('#book').offsetTop;
	 left = $('#book').offsetLeft;
	$("div").text("Высота элемента " + top + " равна " + left + "px.");
}


Нашел еще вот такой вариант, но значение не определяется , пишет undefinedpx.
<div id="pole">
<img  id="book" src="fiesta/lightbox2/images/image-1.jpg" width="90" height="66" alt="gert"  style="position:relative"/>
</div>


#pole { width:400px;height:400px; position:absolute;}

walik 22.04.2011 13:29

Цитата:

Сообщение от 0931454574
Как узнать значение css top.?

$('elem').css('top');

0931454574 22.04.2011 14:38

Яа а ху! все отлично!

0931454574 22.04.2011 15:41

Уважаемый Валик, у предложенного Вами способа есть одно НО, получаем ответ в виде Число+.px
Что делает невозвожным оператор сравнения с числом! Ищу ответ , форматирование строк или перевод в число?

walik 22.04.2011 15:49

var top = '25px';
var number = 15;
alert(parseInt(top) > number);

Используйте функцию parseInt к примеру.

0931454574 22.04.2011 15:51

tx=$('#book').css('top');
     ty=$('#book').css('left');
	 
	 
     tx1 = tx.replace("px", "");
	 ty1 = ty.replace("px", "");
	 
		 alert(tx1+" "+ty1);
			 if (ty1 > 100)


Вот где то так работает, тоесть мы методом replace форматируем строку, убираем px (меняя на ничего, вот бы так в магазине), и после этого все проверяется норм, тоесть условие что ty1>100 а если без replace то нифига!

0931454574 22.04.2011 15:52

parseInt наверное даже лучше)) или правильнее!

Нужно провести тест на скорость работы, каким методом быстрее перевести в нужный вид и проверить? Например 100 000 0 вариантов!
Что Вы на это скажите Валентин?

0931454574 22.04.2011 16:30

$(document).ready(function() {

var y = '+=1';
var x = '+=1';
var i = 0;

for (i=0;i<500;i++)
{
	   $("p").text(i);	
	 tx=$('#book').css('top');
     ty=$('#book').css('left');
	 
	 
     tx1 = tx.replace("px", "");
	 ty1 = ty.replace("px", "");
	 
		 
			 if (ty1 > 100)
			 {
				y = '-=1'; 
		 	 }	else
			 {
				 y = '+=1';
			 }
			 if(tx1 > 100)
			 {
				x = '-=1';
			 }	else
			 {
				 x = '+=1';
			 }
  			$('#book').animate(
				{
	   			opacity: 0.25,
    			top:x,
				left: y
    	     	}, 1, function() {
	  // alert($('#book').css('top'));
    // Animation complete.
 				 });
}
//});

});


Грубо говоря эта функция должна проверять каждый раз условие на зашел ли элемент за границу, а получается что выполняется сначала строчка $("p").text(i); , а только потом анимация и то без проверки условий, короче говоря порядок выполнения неправильный! надеюсь ясно что я хочу получить в итоге


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