Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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_Focus_Hyperlink_Mouseout_Mousedown - Fatal编程技术网

Jquery 单击链接并将鼠标移离链接时,链接将保持焦点。但当我向下移动链接,然后将鼠标移出链接并释放鼠标时,会失去焦点

Jquery 单击链接并将鼠标移离链接时,链接将保持焦点。但当我向下移动链接,然后将鼠标移出链接并释放鼠标时,会失去焦点,jquery,focus,hyperlink,mouseout,mousedown,Jquery,Focus,Hyperlink,Mouseout,Mousedown,如果用户在链接上单击鼠标,但随后将鼠标移离链接,同时仍按住鼠标按钮,并释放鼠标按钮,我试图去除仍然具有焦点的元素。对我来说,这意味着用户在释放鼠标按钮之前意识到他们不想点击链接-因此他们没有在链接上释放鼠标按钮,而是将鼠标从链接上移开,然后释放鼠标按钮 元素可以是链接,也可以是具有活动和焦点样式的div/span,其工作原理相同 在我的示例中,如果我单击其中一个div,它会按我希望的方式操作,但当我鼠标移出时,它会将焦点移开,这是不应该发生的。只有当用户在link/div上鼠标向下移动,然后将鼠

如果用户在链接上单击鼠标,但随后将鼠标移离链接,同时仍按住鼠标按钮,并释放鼠标按钮,我试图去除仍然具有焦点的元素。对我来说,这意味着用户在释放鼠标按钮之前意识到他们不想点击链接-因此他们没有在链接上释放鼠标按钮,而是将鼠标从链接上移开,然后释放鼠标按钮

元素可以是链接,也可以是具有活动和焦点样式的div/span,其工作原理相同

在我的示例中,如果我单击其中一个div,它会按我希望的方式操作,但当我鼠标移出时,它会将焦点移开,这是不应该发生的。只有当用户在link/div上鼠标向下移动,然后将鼠标从元素上拖出,然后释放鼠标按钮时,焦点才应消失。但是我希望元素保持焦点样式,如果他们单击元素,然后在单击之后,将鼠标悬停在元素之外。这是我的问题,如果我单击元素,然后在单击后将鼠标移离元素,它会失去焦点。我知道我的jQuery不正确,出于某种原因,我很难弄清楚jQuery应该是什么样子

$('div').mousedown(function(){
    $(this).mouseleave(function(){
        if ($(this).mousedown()) {
            $(this).blur()
        }
    })
})

这是我能想到的最好的了。虽然不优雅,但完成了任务。问题是焦点事件发生在mouseup上。但是你不知道鼠标移动事件会发生在哪里。所以我们必须用一个全局的来跟踪它


你的解释有点混乱。你能通过明确地解释你想要发生什么来帮上忙吗?如-1所示。点击,不要放手。Div变成蓝色。2.将鼠标从div上移开并松开。我想?同样对于点击和释放的情况,我很困惑你们所描述的和默认的锚行为有什么不同。鼠标指针:悬停,鼠标指针:活动,鼠标指针:默认,鼠标指针:活动,鼠标指针:单击
//keep track of whether the mouse is down or up
var mouseDown;
document.body.onmousedown = function() {
   mouseDown = true;
}
document.body.onmouseup = function() {
  mouseDown = false;
}    

//store currently selected element
var activeElement;

//on mouse leave check whether the mouse is down. if so store the element for
//release on mouse up
$('div').mouseleave(function() {
  console.log(mouseDown);
  if (mouseDown) { 
      console.log('blur');
      activeElement = $(this);
  }    
  else { activeElement = null; }
})

//release the element
$(document).mouseup(function() {
  if (activeElement) {
   console.log('active Element');
      activeElement.blur();
  }
});