Javascript JQueryui菜单将无法正确定位

Javascript JQueryui菜单将无法正确定位,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我正在尝试使用JQueryUI菜单小部件动态创建菜单 问题是菜单没有准确地定位自己。 它(菜单)似乎决定总是出现在html正文的底部附近 第一次单击我的菜单按钮时,单击处理程序,只有第二次单击菜单按钮处理程序时,它才会出现在适当的位置,位于我的菜单按钮的底部。那么,如何让我的菜单忠实于我想要的菜单按钮呢 $(文档).ready(函数(){ $(“#myTabs”).tabs(); var$replaceMenu=$(“”+ “更换电流”“+ “全部替换”+ “”)。菜单(); var r

我正在尝试使用JQueryUI菜单小部件动态创建菜单

问题是菜单没有准确地定位自己。 它(菜单)似乎决定总是出现在html正文的底部附近 第一次单击我的菜单按钮时,单击处理程序,只有第二次单击菜单按钮处理程序时,它才会出现在适当的位置,位于我的菜单按钮的底部。那么,如何让我的菜单忠实于我想要的菜单按钮呢


$(文档).ready(函数(){
$(“#myTabs”).tabs();
var$replaceMenu=$(“
    ”+ “
  • 更换电流”
  • “+ “
  • 全部替换”+ “
”)。菜单(); var replaceMenuHandler=函数(事件){ $replaceMenu.position({ 我的:“左上”, 在“左下角”, 作者:这个 }) .on(“菜单选择”,函数(事件,用户界面){ var selectedReplaceOption=ui.item.text(); console.log(SelectedReplace选项); $replaceMenu.hide(); }).show(); event.stopPropagation(); }; $replaceMenu.appendTo(“#testMenu”).hide(); $(“#测试菜单”)。在(“单击”,替换菜单手柄); });

您可能只需要为
设置样式并将其设置为
位置:相对

因此,在CSS中使用类似的内容:

#testMenu {
    position: relative;
}
您的.ui菜单.ui菜单项a还需要:

.ui-menu .ui-menu-item a {
    white-space: nowrap;
    text-align: left;
}

…那就好看了

您可能只需要为
设置样式并将其设置为
位置:相对

因此,在CSS中使用类似的内容:

#testMenu {
    position: relative;
}
您的.ui菜单.ui菜单项a还需要:

.ui-menu .ui-menu-item a {
    white-space: nowrap;
    text-align: left;
}

…那就好看了

主要问题是,在菜单的单击处理程序中设置位置(请参见replaceMenuHandler)不是一件好事。一旦我从单击处理程序中删除了menu.position调用,并且仅在最初创建菜单时才调用它,代码就开始按照我的预期工作

$(文档).ready(函数(){
$(“#myTabs”).tabs();
var$replacemon=$(
“
    ”+ “
  • ”+ “
  • ”+ “
”) .菜单() .附件(“正文”) .职位({ 我的:“左上”, 在“左下角”, “测试菜单” }) .on(“菜单选择”,函数(事件,用户界面){ var selectedReplaceOption=ui.item.text(); console.log(SelectedReplace选项); $replaceMenu.hide(); }); var replaceMenuHandler=函数(事件){ $replaceMenu.show(); }; $(“#测试菜单”)。在(“单击”,替换菜单手柄); });
主要问题是在菜单的单击处理程序中设置位置(请参阅replaceMenuHandler)不是一件好事。一旦我从单击处理程序中删除了menu.position调用,并且仅在最初创建菜单时才调用它,代码就开始按照我的预期工作

$(文档).ready(函数(){
$(“#myTabs”).tabs();
var$replacemon=$(
“
    ”+ “
  • ”+ “
  • ”+ “
”) .菜单() .附件(“正文”) .职位({ 我的:“左上”, 在“左下角”, “测试菜单” }) .on(“菜单选择”,函数(事件,用户界面){ var selectedReplaceOption=ui.item.text(); console.log(SelectedReplace选项); $replaceMenu.hide(); }); var replaceMenuHandler=函数(事件){ $replaceMenu.show(); }; $(“#测试菜单”)。在(“单击”,替换菜单手柄); });
我不知道是不是同样的问题。。。但我在jQueryUI Autocomplete上也有同样的问题。之所以会发生这种情况,是因为jQueryUI使用默认的html元素来附加其div。如果元素不存在,它将附加到html正文的末尾。在这里:我不知道这是否是同一个问题。。。但我在jQueryUI Autocomplete上也有同样的问题。之所以会发生这种情况,是因为jQueryUI使用默认的html元素来附加其div。如果元素不存在,它将附加到html正文的末尾。截至此处: