jQuery或Javascript问题:判断鼠标坐标是否在指定范围内

在鼠标触发Click事件时,取得鼠标坐标(X,Y),然后通过与图形的顶点数据判断鼠标的位置是否在图形范围内。请问该怎么做?用jQuery或Javascript皆可。表达能... 在鼠标触发Click事件时,取得鼠标坐标(X,Y),然后通过与图形的顶点数据判断鼠标的位置是否在图形范围内。请问该怎么做?用jQuery或Javascript皆可。

表达能力太好,如图片所示:由于HTML都是矩形的,所以我用灰色来表示矩形。而红色就是不规则图形。我想鼠标在红色区域内点击就返回true,在红色区域以外点击就返回false。
展开
 我来答
felithuang
推荐于2016-09-16 · TA获得超过849个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:711万
展开全部

// 保证点的数组是以顺时针保存
function pointInArea(pt, pts) {
    pts = pts.slice();
    pts.push(pts[0]); // 连接最后一边
    for (var i=1; i<pts.length; ++i) {
        var p0 = pts[i-1];
        var p1 = pts[i];
        var dx = p1.x-p0.x;
        var dy = p1.y-p0.y;
        if (dx == 0) {
            if (dy > 0 && pt.x > p0.x) {
                return false;
            }
            if (dy <0 && pt.x < p0.x) {
                return false;
            }
        }
        var y = dy/dx*(pt.x-p0.x)+p0.y;
        if (dx > 0 && pt.y < y) {
            return false;
        }
        if (dx <0 && pt.y > y) {
            return false;
        }
    }
    return true;
}
更多追问追答
追问
请问PT是不是鼠标的X,Y坐标数组?PTS是图形的各个顶点数组?
我看得不是很懂,能写个实例吗?
追答
pt:点,有xy坐标值;pts:区域顶点坐标数组。
调用示例:
var isInArea = pointInArea({x:100, y:50}, [{x:0, y:0}, {x:100, y:0}, {x:200, y:100}, {x:100, y:100}]);
探索者西瓜
2014-07-02 · TA获得超过174个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:172万
展开全部
你好 给你个链接 里边基本符合你的需求 不过你要好好看看人家是如何做的 Good luck !http://jsfiddle.net/66YsR/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我QQ738483498
2014-07-02
知道答主
回答量:61
采纳率:0%
帮助的人:18.8万
展开全部
20RMB帮你写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式