我有一个页面,上面有一堆项目。每个项目都有一个小部件,当单击该小部件时,会显示一个 YUI 弹出式选项菜单。到目前为止,这工作正常。
我正在使用 jQuery/ajax 调用将新项目插入页面,将现有项目向下推。项目已正确插入,但我现在必须以某种方式更新项目弹出菜单的位置,以匹配调用它们的小部件的新位置。据我所知,它们被计算为页面坐标并在呈现页面时与菜单对象一起存储,并且不会由 ajax 插入自动更新。
这就是我的问题所在:我尝试了一些 jQuery,它为每个菜单重新计算菜单项,执行 removeListener() 来终止旧菜单,并执行 addListener() 来插入应该是新菜单的内容。这会在调用菜单时正确更新菜单的位置,但会破坏其他内容:如果我单击一个小部件并调出一个菜单,然后单击页面上的其他位置,则菜单会留在屏幕上而不是消失。我可以单击其他小部件,它们也会出现。注意:控制台中没有显示错误;在菜单演示过程中按 ESCAPE 键仍然可以正确隐藏菜单。
必须有办法做到这一点,但我迷路了。有什么线索吗?也许我真正需要做的就是更新菜单的上下文信息;有没有办法做到这一点,而不需要似乎把我搞砸的删除和添加侦听器序列?谢谢!