Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2011, 13:37
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Перемещение элементов
Всем доброго времени суток. Столкнулся со следующей проблемой: есть чекбоксы с одним класом и разными id. Все они распололжены вертикально. На данный момент возле первого при загрузке страницы появляется подсказка. Возможно ли сделать так, чтобы при скролинге или перемещении страницы вниз если эта подсказка скрывается(становится не видна из-за скрола) выводить у того чекбокса, который виден?На сколько я понимаю, можно брать $(window).scrollTop() и когда она становится равной абсолютному положению чекбокса переходить на следующий. Но как определить абсолютное положение так и не понял. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2011, 13:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,489

http://javascript.ru/ui/offset
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 28.03.2011, 17:15
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Aetae, спасибо. Получился следующий код
$(window).scroll(function () {
    	var i;
    	var j = $(".checkbox-check").length;
    	for (i=0;i<j;i++)
    	{
    		var el = document.getElementsByClassName('checkbox-check')[i];
    		var br = el.getBoundingClientRect();
    		var top_el = br.top;
    		if (top_el <= 0)
    		{
        		var position_next = $('.checkbox-check').eq(i+1).offset();
        		if (position_next != null)
        		{
	        		var top = position_next.top + 17;
	        		$("#tooltip-checkbox-check").css("top", + top);
        		}
    		}
    	}
    });
    
	$(document).ready(function(){
		var position = $('.checkbox-check').offset();
		var top = position.top;
		$("#tooltip-checkbox-check").css("top",top + 20).css("left","806px").show();
	});


Но первый элемент задействуется только вначале...Не подскажите как можно это исправить?

Последний раз редактировалось Johny, 28.03.2011 в 17:22.
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2011, 13:16
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Если кому интересно:
$(window).scroll(function () {
    	var i;
    	var j = $(".checkbox-check").length;
    	for (i=0;i<j;i++)
    	{
    		var el = document.getElementsByClassName('checkbox-check')[i];
    		var br = el.getBoundingClientRect();
    		var top_el = br.top;
    		if (i == 0 && top_el > 0)
    		{
        		var position_next = $('.checkbox-check').eq(0).offset();
        		if (position_next != null)
        		{
	        		var top = position_next.top + 17;
	        		$("#tooltip-checkbox-check").css("top", + top);
        		}
    		}
    		if (top_el <= 0)
    		{
        		var position_next = $('.checkbox-check').eq(i+1).offset();
        		if (position_next != null)
        		{
	        		var top = position_next.top + 17;
	        		$("#tooltip-checkbox-check").css("top", + top);
        		}
    		}
    	}
    });
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2011, 13:22
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Теперь всё везде работает. Сори за флуд.

window.onscroll = scrollEvent;
	function scrollEvent() {
    	var i;
    	var j = $(".checkbox-check").length;
    	for (i=0;i<j;i++)
    	{
    		//var el = document.getElementsByClassName('checkbox-check')[i];
    		var el = $(".checkbox-check")[i];
    		var br = el.getBoundingClientRect();
    		var top_el = br.top;
    		if (i == 0 && top_el > 0)
    		{
        		var position_next = $('.checkbox-check').eq(0).offset();
        		if (position_next != null)
        		{
	        		var top = position_next.top + 17;
	        		$("#tooltip-checkbox-check").css("top", + top);
        		}
    		}
    		if (top_el <= 0)
    		{
        		var position_next = $('.checkbox-check').eq(i+1).offset();
        		if (position_next != null)
        		{
	        		var top = position_next.top + 17;
	        		$("#tooltip-checkbox-check").css("top", + top);
        		}
    		}
    	}
	}

Последний раз редактировалось Johny, 29.03.2011 в 13:54.
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2011, 13:43
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Попробуйте в .css() указывать величину в пикселах, а не просто число.

Т.е. .css("top", top + "px");
Ответить с цитированием
  #7 (permalink)  
Старый 29.03.2011, 14:01
Аспирант
Отправить личное сообщение для Johny Посмотреть профиль Найти все сообщения от Johny
 
Регистрация: 20.08.2010
Сообщений: 54

Сообщение от Matre Посмотреть сообщение
Попробуйте в .css() указывать величину в пикселах, а не просто число.

Т.е. .css("top", top + "px");
Спасибо, но проблема была в кроссбраузерности...FF сразу все слопал за радость, а остальные, например, ie только после замены
document.getElementsByClassName('checkbox-check')[i]
на
$(".checkbox-check")[i]
и назначения на js
window.onscroll = scrollEvent
, т.к. jquery
$(window).scroll
он не хотел понимать почему-то...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Никак не могу достучаться до элементов DeeSoft jQuery 0 14.02.2011 20:05
Изменение множества элементов Input по определённом призна Лавсановые Волокна Элементы интерфейса 1 24.12.2010 10:37
Быстрый разбор списка элементов. B~Vladi Общие вопросы Javascript 31 14.07.2010 15:52
Запрет на перемещение элементов html Ilyan (X)HTML/CSS 2 26.03.2010 10:21
Выбор элементов и построение списка выбранных элементов. madgals Events/DOM/Window 6 14.04.2009 22:30