【问题标题】:how do I find out if the cursor is in the bounds of an element如何确定光标是否在元素的边界内
【发布时间】:2014-05-02 17:21:19
【问题描述】:

我正在创建一个拖放应用程序,我想要做的是当用户拖动一个元素时,如果光标位于某个其他元素上。

流程如下:

用户开始在页面周围拖动元素
当鼠标越过某些部分时,我想进行 ajax 调用。

因为我通过 jquery 知道元素及其边界,所以我只想要最好的方法来进行检查。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    提到的sn-p

    https://stackoverflow.com/users/650094/adam-terlson

    来自

    find elements that are stacked under (visually) an element in jquery

    看起来像这样:

    function mouseWithin(bounds,x,y) {
        var offset = bounds.offset();
        var l = offset.left;
        var t = offset.top;
        var h = bounds.height();
        var w = bounds.width();
    
        var maxx = l + w;
        var maxy = t + h;
    
        return (y <= maxy && y >= t) && (x <= maxx && x >= l);
    };
    

    你可以这样使用它:

    var gallery=$("#carousel-gallery");
    mouseWithin(gallery,event.pageX,event.pageY);
    

    【讨论】:

      【解决方案2】:

      $("#element").hover();

      Hover

      【讨论】:

      • 或 mouseenter() 和 mouseleave()
      • 这不起作用,因为由于拖动,我有一个元素附加到鼠标上。
      【解决方案3】:

      从这里开始:http://docs.jquery.com/Tutorials:Mouse_Position

      获取鼠标坐标并将其与您要与之比较的项目的.offset() 值进行比较。

      http://api.jquery.com/offset/

      【讨论】:

      • 这就是我正在做的,但我想知道是否有更好/更简单的方法来做到这一点
      • 通常使用事件是安全的,但由于您随身携带的物品重叠,答案是:可能不会。 :(
      • 也许从这个答案中劫持了一些代码:stackoverflow.com/questions/5598953/… 这可能是有价值的。
      猜你喜欢
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多