• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

jquery如何判断鼠标是否在div上?

jquery 搞代码 4年前 (2021-12-27) 61次浏览 已收录 0个评论

jquery如何判断鼠标是否在div上?下面本篇文章给大家介绍一下使用jquery判断鼠标是否在div上的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

jquery如何判断鼠标是否在div上?

方法1:用 $.contains 来判断

$.contains是jquery里用来判断一个标签是否包含另一个标签的方法.

//$.contains的语法结构为:
$.contains(容器,要判断的标签元素);

要注意的,$.contains的两个参数必须为dom对象,不能是jquery对象!

来看用$.contains来判断鼠标是否处于div之内的具体代码:

if($.contains($("#aijquery")[0],e.target) || $("#aijquery")[0]==e.target){
    $(".info").text("鼠标在这个DIV里");
}else{
    $(".info").text("鼠标不在这个DIV里");
}

上面实例里,#aijquery 就是要判断的DIV,e.target是鼠标触发的节点。

要判断鼠标是否位于div#aijquery之内,先$.contains来判断,鼠标所触发的节点是否被包含在div#aijquery内,然后再判断鼠标触发的节点是否就是当前的div#aijquery节点,这两种情况下,鼠标都处在div之内。

方法2:使用mouseover和mouseout来判断

当鼠标指针位于元素上方时,会发生 mouseover 事件,当鼠标指针从元素上移开时,发生 mouseout 事件。

PS:和 mouseenter/mouseleave 事件不同,不论鼠标指针进入/离开被选元素还是任何子元素,都会触发 mouseover/mouseout 事件。只有在鼠标指针进入/离开被选元素时,才会触发 mouseenter/mouseleave 事件。

$("#aijquery").mouseover(function(){
    $(".primary").text("方法二:鼠标在这个DIV里");
}).mouseout(function(){
    $(".primary").text("方法二:鼠标不在这个DIV里");
});

缺点:在页面初始化时,也就是刚打开页面时,是判断不出来的,只有把鼠标移上div上一次,激活了mouseover事件后,才能判断,具体可以看上面给的那个在线实例演示。

方法3:最传统的方法,也就是通过X、Y坐标来判断

var x=e.clientX;
var y=e.clientY;
var div_x_1 = $("#aijquery").offset().left;
var div_y_1 =  $("#aijquery").offset().top;
var div_x_2 = $("#aijquery").offset().left+$("#aijquery").outerWidth();
var div_y_2 =  $("#aijquery").offset().top+$("#aijquery").outerHeight();
if( x < div_x_1 || x > div_x_2 || y < div_y_1 || y > div_y_2){
    $(".danger").text("方法三:鼠标不在这个DIV里");
}else{
    $(".danger").text("方法三:鼠标在这个DIV里");
}

综合示例:

<!doctype html>
<html>
<head>
<script language="JavaScript" src="//cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css"
 href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
</head>
<body class="text-center p-5">
  <DIV class="border border-danger p-5">
    <Div id="aijquery" class="border border-dark p-3 alert-success">
      <span class="info border border-info">inifo</span><br>
      <span class="primary border border-dark">inifo</span><br>
      <span class="danger border border-danger">inifo</span>
    </Div>
  </DIV>
<script language="JavaScript">
$(document).mousemove(function(e){ 
 if($.contains($("#aijquery")[0],e.target) || $("#aijquery")[0]==e.target){
       $(".info").text("方法一:鼠标在这个DIV里");
    }else{
 $(".info").text("方法一:鼠标不在这个DIV里");
    }
});
$("#aijquery").mouseover(function(){
 $(".primary").text("方法二:鼠标在这个DIV里");
}).mouseout(function(){
 $(".primary").text("方法二:鼠标不在这个DIV里");
});
$(document).mousemove(function(e){
 var x=e.clientX;
    var y=e.clientY;
    var div_x_1 = $("#aijquery").offset().left;
    var div_y_1 =  $("#aijquery").offset().top;
    var div_x_2 = $("#aijquery").offset().left+$("#aijquery").outerWidth();
    var div_y_2 =  $("#aijquery").offset().top+$("#aijquery").outerHeight();
    if( x < div_x_1 || x > div_x_<p style="color:transparent">来源gao!%daima.com搞$代*!码网</p>2 || y < div_y_1 || y > div_y_2){
     $(".danger").text("方法三:鼠标不在这个DIV里");
    }else{
     $(".danger").text("方法三:鼠标在这个DIV里");
    }
});
</script>
</body>
</html>

更多web前端开发知识,请查阅 搞代码网 !!

以上就是jquery如何判断鼠标是否在div上?的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:jquery如何判断鼠标是否在div上?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址