Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 页面加载时触发的鼠标指针&;如果未触发其他鼠标指针事件_Jquery_Pageload_Mouseenter_Mouseleave - Fatal编程技术网

Jquery 页面加载时触发的鼠标指针&;如果未触发其他鼠标指针事件

Jquery 页面加载时触发的鼠标指针&;如果未触发其他鼠标指针事件,jquery,pageload,mouseenter,mouseleave,Jquery,Pageload,Mouseenter,Mouseleave,当我的页面加载时,我想在我的菜单项“#currentitem a”上触发鼠标指针。我已经完成了: $(document).ready(function(){ $("#currentitem a").trigger('mouseenter'); }); 我的问题是,如果我用鼠标输入(手动)另一个项目,则触发的(上面有代码)项目不会被删除。菜单项重叠 我是一个新手,如果可能的话,我想做到以下几点 在pageload上的鼠标输入“#currentitem a” 当另一个项目触发鼠标指针时,鼠标移

当我的页面加载时,我想在我的菜单项
“#currentitem a”
上触发鼠标指针。我已经完成了:

$(document).ready(function(){
  $("#currentitem a").trigger('mouseenter');
});
我的问题是,如果我用鼠标输入(手动)另一个项目,则触发的(上面有代码)项目不会被删除。菜单项重叠

我是一个新手,如果可能的话,我想做到以下几点

  • 在pageload上的鼠标输入
    “#currentitem a”
  • 当另一个项目触发鼠标指针时,鼠标移动
    “#currentitem a”
  • 当该菜单项触发mouseleave时,mouseenter
    “#currentitem a”
    ,因此该项总是在没有其他内容时触发
  • 菜单是更复杂的jQuery设置的一部分,而不仅仅是简单的CSS,所以这是我能看到的最好的方法。任何帮助都将不胜感激


    现在,我创建了一个JSFIDLE来展示我正在尝试做什么:


    以下是一些应该有效的尝试方法

    $(function(){
        $('#currentitem a').trigger('mouseenter');
        $('.currentitem a').on('mouseenter', function(e) {
            if ($('.currentitem a:focus').length > 0) {
                $('.currentitem a:focus').blur();
            }
        });
    });
    
    如果这不工作,请让我知道,我会tweek它

    编辑:

    看了你的编辑后,我可能发现了你的问题

    当您使用jQuery以元素为目标时,id属性在DOM中只应使用一次。假设你的html是这样的,我猜接下来的事情是当鼠标输入一个不同的项目(例如列表中的下一个li)时,你没有监听。如果这是真的,您只需要侦听其他li元素上的
    mouseenter
    事件

    最后,如果您正在收听这些事件,但它们不起作用,那么还有另一个事件它们可能对您起作用。事件为
    mouseover

    中期编辑更新:

    如果您说的是当您将鼠标直接移到“我们的项目”上而不点击任何其他内容时,菜单不会隐藏,这是因为鼠标从未“进入”元素,因此它不会隐藏自己,解决方法很简单:

    $("#mydroplinemenu > ul > li[id!='currentitem'] > a").one('mouseenter', function(e) {
       $('#currentitem a').trigger('mouseleave'); 
    });
    

    我的事件选择器只针对非#currentitem的链接元素,每个链接只触发一次。这也许正是你要找的!我在您的JSFIDLE上测试了它,它确实有效。

    当您的逻辑有缺陷时,就会发生这种情况。当鼠标离开某个元素时,您预计会发生一些事情,但很可能鼠标永远不会离开该元素,您可能应该做一些事情,如关闭所有其他菜单等。当鼠标进入新菜单项时,或者至少检查在进入另一个菜单项时,是否按预期关闭了所有菜单项,不仅仅是在离开的时候。非常感谢你的帮助。。但不幸的是,它的行为仍然和以前一样。我是jquery的新手,因此无法将其区分开来。任何调整都将不胜感激。很抱歉混淆了元素是一个id=currentitem(后期编辑)我现在创建了一个JSFiddle来显示我试图做什么:@xsample我已经更新了我的答案。您应该首先尝试的是在中间编辑更新之后