запуск события наведения курсора через навигацию по меню курсора - PullRequest
0 голосов
/ 26 июля 2011

Здесь немного сложного сценария.

У меня есть встроенная SVG-графика, которая будет изменена в результате изменений, внесенных в родительский HTML-документ.У меня есть текстовое поле, и при вводе в него поиска оно будет заполнено списком ajax UL.Навигация может быть выбрана с помощью мыши или клавиши курсора вверх и вниз.Выбор элемента с помощью возврата или щелчка мышью.

Все это работает хорошо.Я добавил метод, когда элемент меню при наведении курсора мыши отображает желаемый результат в документе SVG.

Я делаю это с помощью события onmouseover, добавляемого в li при его создании ввызов ajax PHP.

?><li class="<?=searchClass?>" onClick="win.hidePopup(); document.getElementById('<?=$field?>').value = '<?=$line->textName?>';"  onMouseOver="svgCreateCircle(<?=$x?>,<?=$y?>,'red','<?=$line->textName?>');"><?=$img?><?=$line->textName?></li>
<?

В этот момент необходимо добавить onmouseover, поскольку именно здесь я передаю параметры (x, y, текст, цвет) в документ SVG, чтобы он знал, что и где размещать.Я не могу использовать метод jquery для динамического присоединения события наведения мыши.

Проблема, с которой я столкнулся, заключается в том, чтобы навигация с помощью клавиатуры выполняла те же действия, что и навигация с помощью мыши.при наведении курсора мыши на элемент li на графике будет отлично отображаться результат, а при перемещении с помощью клавиш курсора - нет.Я получаю все изменения фона и т.д., имитирующие наведение мыши, но не событие наведения мыши само по себе.Попытка вызвать событие также ничего не делает.

Я использовал:

$("ul#itemSearchlist li").eq(menuitem).mouseover();
$("ul#itemSearchlist li").eq(menuitem).trigger('mouseenter');
$("ul#itemSearchlist li").eq(menuitem).trigger('hover');

, но ни одна из этих работ

1 Ответ

0 голосов
/ 26 июля 2011

Может возникнуть необходимость абстрагировать это, чтобы вы больше не полагались на событие mouseover, чтобы отслеживать изменения в состоянии выбора, а вместо этого сами отслеживали состояние выбора в JavaScript. Идея состоит в том, что вы будете отслеживать, какой элемент выбран (состояние), и регистрировать обработчики событий для обновления состояния. Таким образом, в событии mouseover вы обновляете цель события mouseover и выполняете желаемое действие (создавая круг). В случае событий клавиатуры вы сможете получить предыдущий и следующий элементы списка через DOM, при нажатии клавиш вверх и вниз соответственно. После обновления состояния на предыдущий или следующий элемент списка вы сможете снова выполнить желаемое действие по созданию круга на основе обновленного состояния выбора.

...