Jquery 通过光标键菜单导航触发鼠标悬停事件

Jquery 通过光标键菜单导航触发鼠标悬停事件,jquery,events,navigation,svg,onmouseover,Jquery,Events,Navigation,Svg,Onmouseover,这里有点复杂 我有一个嵌入的SVG图形,它将被对父HTML文档所做的更改所改变。 我有一个文本框,当您在其中键入搜索时,它将填充一个ajax UL列表。 可以通过鼠标或上下光标键选择导航。 通过返回或鼠标单击选择项目 所有这些都很有效。我添加了一个方法,当用鼠标悬停菜单项时,它将在SVG文档中显示所需的结果 我是通过在PHPAJAX调用中生成时添加到li的onmouseover事件来实现这一点的 ?><li class="<?=searchClass?>" onClick

这里有点复杂

我有一个嵌入的SVG图形,它将被对父HTML文档所做的更改所改变。 我有一个文本框,当您在其中键入搜索时,它将填充一个ajax UL列表。 可以通过鼠标或上下光标键选择导航。 通过返回或鼠标单击选择项目

所有这些都很有效。我添加了一个方法,当用鼠标悬停菜单项时,它将在SVG文档中显示所需的结果

我是通过在PHPAJAX调用中生成时添加到li的onmouseover事件来实现这一点的

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

但是这些都不起作用

可能需要将其抽象出来,这样您就不再依赖mouseover事件来跟踪选择状态的变化,而是自己在JavaScript中跟踪选择状态。这样做的目的是跟踪选择的项目(状态),并注册事件处理程序以更新状态。因此,在mouseover事件上,更新mouseover事件目标,并执行所需的操作(创建圆)。在键盘事件的情况下,您可以通过DOM分别在向上键和向下键上检索上一个和下一个列表项。将状态更新到上一个或下一个列表项后,您将能够根据更新的选择状态再次执行创建圆圈的所需操作。

三个快速问题。1:您使用的是什么版本的jQuery?2:当你通常把鼠标放在上面时,鼠标会在上面工作吗。3:你试过
.trigger('mouseover')
?1:2:是的。真正的鼠标在上面运行得很好3:试过了,没用。IDLE没有1.4.2,但是它有1.4.4,我猜它们之间没有什么大的变化。这似乎奏效了。您的代码中可能有错误?列表的跟踪状态已被跟踪。菜单导航是一个由许多不同区域使用的共享资源。我使用以下方法跟踪当前选定的状态:如果($('ul#itemSearchList li.itemHover').size()==0{currentSelection=-1;}鼠标悬停器不用于跟踪当前选定的菜单,而是用于实现所需的操作,因此,考虑到您可能无法使用脚本可靠地触发DOM事件,您可能应该将mouseover事件和keypress事件委托给同一个函数,以便该函数使用跟踪状态执行所需的操作。这样,您就不需要在收到按键事件时模拟鼠标悬停事件,这可能是不可靠的。
$("ul#itemSearchlist li").eq(menuitem).mouseover();
$("ul#itemSearchlist li").eq(menuitem).trigger('mouseenter');
$("ul#itemSearchlist li").eq(menuitem).trigger('hover');