Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.02.2014
Сообщений: 8

Неправильные координаты отображения выпадающего списка

19.06.2014, 16:35. Показов 864. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые специалисты. Столкнулся с задачкой и не могу ее решить, возможно у вас будут какие-то идеи... Суть:
Есть меню с выпадающим списком, который по умолчанию display:none, а при нажатии на кнопку меню становится видимым. Реализовано это так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
$('.menuButton').click(function(){
        
        var el = $(this).find('.subPhoneMenu')
        el.css('top',$(this).offset().top);
        if(el.css('display') == 'none'){
            $(".subPhoneMenu").hide();
            el.show();
            el.attr('active','true');
        }else{
            el.hide();
            el.attr('active','false');
        }
    });
Решил я меню сделать с position:fixed, но не просто, а при достижении им верха окна при прокрутке. Тобишь сначала меню прокручивается вместе с остальным контентом, а достигнув верха окна останавливается и остается висеть там, в поле зрения. Реализовал это таким образом:

JavaScript
1
2
3
4
5
6
$(function(){
 $(window).scroll(function() {
  var top = $(document).scrollTop();
  if (top > 175) $('.floating2').addClass('fixed'); 
  else $('.floating2').removeClass('fixed');
 });
Вроде все хорошо, да не все... Выпадающий список, если прокручивать страницу и нажимать на кнопку меню(активировать), отображается все ниже и ниже в окне. Чем больше контента прокрутил, тем ниже отобразится выпадающий список. В итоге его вообще становится не видно, т.к. он отображается где-то внизу за пределами монитора))
Насколько я понял, происходит это потому-что когда список скрыт идет отсчет растояния до элемента от ПЕРВОНАЧАЛЬНОГО верхнего края окна (до прокрутки), а потом, при активации списка, это расстояние до элемента применяется уже к НОВОМУ верхнему краю окна (после прокрутки). Вот и получается что, если я прокрутил страницу на 1500пкс, то список отобразится на 1500пкс ниже того места, где он должен был бы отобразиться.

Кто-нибудь сталкивался с таким? Подскажите, пожалуйста, как можно решить эту проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2014, 16:35
Ответы с готовыми решениями:

Jcrop - обрезка до загрузки, неправильные координаты
Для кадрирования (обрезки) фотографии до загрузки выводится превью и его кадрируем. Проблема в том, что если превью 1:1 то всё нормально,...

Обновление выпадающего списка в форме в зависимости от выпадающего списка выше
Есть 3 таблицы (1,2,3) Первая и вторая связаны между собой через таблицу 3. Есть 3 выпадающих списка в Form1. Нужно что бы во втором...

Конкретные значения из выпадающего списка на форме в зависимости от значения другого выпадающего списка
Добрый день! Помогите решить вопрос: есть база данных (прилагается) и в ней на форме хочу, чтобы во втором выпадающем списке можно было...

3
2 / 2 / 0
Регистрация: 04.11.2013
Сообщений: 101
19.06.2014, 20:56
Пару недель назад точно с такой же проблемой сталкивался. Правда не с меню,а с перетаскиваемыми элементами (прокрутка также все портила).
Решил следующим образом: тому элементу, который только что перетащили, я присваивал класс с фиксированным позиционированием, а старый удалял.

Хотя на деле, у Вас может оказаться все сложнее.
Но может и помог
1
Superposition
 Аватар для Padimanskas
950 / 615 / 256
Регистрация: 27.10.2013
Сообщений: 2,083
20.06.2014, 00:12
Цитата Сообщение от YuraSG Посмотреть сообщение
Подскажите, пожалуйста, как можно решить эту проблему?
Метод click в jQuery возвращает объект события в свой коллбек. В этом объекте, помимо всего остального, находятся и текущие координаты курсора.

JavaScript
1
2
3
$('.menuButton').click(function(event){
    alert('x: ' + event.pageX + ', y: ' + event.pageY);
});
1
0 / 0 / 0
Регистрация: 13.02.2014
Сообщений: 8
06.07.2014, 17:51  [ТС]
Ребята, благодарю за Ваши ответы! Teterichev - Ваш способ не пробовал, но за идею - спасибо. Padimankas - подсказка сработала, покопался и сделал. Спасибо! Реализовал так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
       $('.menuButton').click(function(event){
        
        var el = $(this).find('.subPhoneMenu')
        el.css('x: ' + event.pageX + ', y: ' + event.pageY );
        if(el.css('display') == 'none'){
            $(".subPhoneMenu").hide();
            el.show();
            el.attr('active','true');
        }else{
            el.hide();
            el.attr('active','false');
        }
    });
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.07.2014, 17:51
Помогаю со студенческими работами здесь

Неправильные координаты формы
Добрый день, у меня есть проект, форма 371x139 (Form2). Мне нужно при запуске программы показывать эту форму в указанных экранных...

Неправильные координаты при экспорте
Доброго дня форумчане. Такая беда. В 3дс максе делал для объекта текстуры. Вроде сделал, всё отлично. Делаю Экспорт модели 1 в FBX , 2...

Изменение содержимого простого списка при апдейте выпадающего списка
Добрый день! Суть моей просьбы о помощи такова: На форме (пока) расположен выпадающий список с определенными значениями и ниже...

Отбор записей динамического списка по выбранному значению отбора в виде выпадающего списка
Здравствуйте, имеется справочник с реквизитами: ДатаНачала, Продолжительность, Стоимость, Преподаватель. Нужно добавить выпадающий список,...

Общий фильтр для списка и выпадающего списка
Приветствую, есть проблема, я не могу понять как сделать общий фильтр для списка и для выпадающего списка т.е. чтобы после выбора числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru