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

#jquery #contextmenu

#jquery #контекстное меню

Вопрос:

Хорошо, я думаю, что строка темы объясняет большую часть этого, но все же я расскажу немного подробнее. Хорошо, вот сценарий,

У меня есть дерево элементов (имена элементов получены из базы данных, поэтому могут быть от none до 1000), каждый созданный элемент поставляется с функциональностью контекстного меню (т. Е. Вы можете щелкнуть по ним правой кнопкой мыши, чтобы просмотреть контекстное меню с 4-5 действиями). Теперь, кажется, все работает нормально, если я прокручиваю страницу вверх и вниз, но на некоторых страницах нет полос прокрутки (в соответствии с требованиями проекта), поэтому, если я нажму на самый нижний элемент, чтобы просмотреть список действий в контекстном меню, все, что я вижу, это половина контекстного меню и оставшаяся половина выходит за пределы окна браузера (пожалуйста, смотрите изображение ниже).,

введите описание изображения здесь

Мой вопрос в том, есть ли способ переместить положение контекстного меню так, чтобы оно всегда оставалось в пределах окна браузера. С нетерпением жду ваших ответов и помощи,

С уважением,

rac3B3nn0n

Комментарии:

1. вы сами создали дерево и контекстное меню или можете дать несколько ссылок на источники?

2. Я не уверен, используете ли вы пользовательский интерфейс jquery, но у него есть утилита позиционирования со смещением столкновения, которая сохранит элемент внутри области просмотра: jqueryui.com/demos/position — это может сработать / не сработать для вас, но я подумал, что стоит упомянуть об этом.

3. Спасибо Мануэлю и Сваткинсу … 🙂

Ответ №1:

У меня была такая же проблема для очень большого контекстного меню (> 50 элементов). Я решил это следующим образом:

 <style type="text/css">
  .limit-context-size { max-height: 300px; overflow-y: scroll; }
</style>
...
$.contextMenu({
...
  className: "limit-context-size",
...
});
 

Это приводит к прокрутке меню по вертикали. Размер 300 пикселей был выбран на основе размера шрифта контекстного меню.

Ответ №2:

Спасибо всем, хорошо, я понял это. На самом деле это была моя собственная ошибка, чтобы исправить ошибку позиционирования для IE6, я немного изменил код внутри jquery.contextMenu.js , переосмыслил то, что по-другому просто сработало для меня.

Спасибо вам всем за вашу помощь и усилия

С уважением, rac3B3nn0n

Комментарии:

1. можете ли вы поделиться кодом, который вы изменили, чтобы исправить положение? Спасибо