Jquery $(“someclass”)is(“悬停”)仅适用于单个;someclass“;实例

Jquery $(“someclass”)is(“悬停”)仅适用于单个;someclass“;实例,jquery,hover,Jquery,Hover,我有个奇怪的问题。我想在单击任意位置后使用.slideUp()进行一些div,但前提是鼠标未悬停在特定元素上 $("body").mousedown(function() { if ($(".title").is(":hover") || $(".helper").is(":hover")) return; $(".helpers").slideUp(); }); $(".title").mouseover(function() { $(".helpers").slide

我有个奇怪的问题。我想在单击任意位置后使用.slideUp()进行一些div,但前提是鼠标未悬停在特定元素上

$("body").mousedown(function() {
    if ($(".title").is(":hover") || $(".helper").is(":hover")) return;
    $(".helpers").slideUp();
});
$(".title").mouseover(function() {
    $(".helpers").slideDown();
});
这段代码对我很有用(将“dev_helpers”悬停在顶部页面),直到我不得不将第二个“.helper”元素添加到源代码中。之后,单击主体,javascript将转储以下错误:

Error: Syntax error, unrecognized expression: unsupported pseudo: hover
我试图修改循环元素的代码:

$("body").mousedown(function() {
      if ($(".title").is(":hover")) return;
      $('.helper').each(function(i, obj) {
           if ($(this).is(":hover")) return;
      });
      $(".helpers").slideUp();
});
$(".title").mouseover(function() {
    $(".helpers").slideDown();
});
错误不再显示,但:悬停检查“for each”不起作用(它不阻止slideUp()

我必须这样做:

$("body").mousedown(function() {
    if ($(".title").is(":hover") || $(".helper1").is(":hover") || $(".helper2").is(":hover")) return;
    $(".helpers").slideUp();
});
$(".title").mouseover(function() {
    $(".helpers").slideDown();
});
但这并不是我的解决方案,因为我必须为每个“.helperX”实例添加新元素检查


也许有人会有任何线索…

:悬停作为伪选择器或伪事件jQuery 1.8。这是在上提到的(有一个解决方法)

如果您将代码更改为:

if ($(".title").is(":focus") || $(".helper1").is(":focus") || $(".helper2").is(":focus"))

这似乎是有效的,并且(没有完全测试)可能相当于您当前的代码。尽管评论中提出的其他问题应该引起更高的关注。

正如前面提到的
:hover
伪选择器似乎有一些问题,但是它确实对我使用jQuery edge在Chrome上工作

您不需要使用
.each()
循环(而且您似乎不了解作用域是如何工作的。
return
的作用域在
中。each()
,它不会
鼠标向下
返回
)。无论如何,您可以这样做:

if ( $(".title").is(":hover") || $(".helper:hover").length ) return;

您可以看到它在这里工作:。但是,
:hover
在其他浏览器中可能不可靠,因此我不相信它。

我没有看到任何类,
title
helper
helpers
出现在您链接的站点中。此外,请避免链接到外部站点,但使用代码段或在上以最小的方式复制您的问题。您的
。each()
循环不会做任何事情。它测试元素是否处于悬停状态,但不根据结果执行任何操作。函数只是返回,然后转到循环中的下一个元素。不幸的是,在我的情况下,这个替代方法似乎不起作用。。我希望使代码最具更新性和兼容性,但是:在我的例子中hover仍然做得更好结果:/about scopes:我是在纯java上长大的,在那里break;是为了打破循环和返回;是逃避整个功能,但我承认我是新手jQuery@s1w_一开始,作用域与js/jquery非常混淆,但您会了解其中的诀窍。我强烈建议阅读jquery作用域和闭包,这样就不会发生意想不到的事情:p