jQuery - 检测特定像素区域的点击,然后执行功能

Posted

技术标签:

【中文标题】jQuery - 检测特定像素区域的点击,然后执行功能【英文标题】:jQuery - Detect click in certain pixel area, then execute function 【发布时间】:2013-02-05 22:10:13 【问题描述】:

我目前有一个 div,我们称之为 #videodiv,其中包含一个 html5 视频播放器(SublimeVideo,但这可能是无关紧要的信息)。在页面加载时,#videodiv 只有 100 像素。当用户点击#videodiv 内的任意位置时,我希望 jQuery 将 div 扩展为 250px。

你可能会说——就像 jQuery 函数一样简单,只需使用点击然后动画!你是对的,除了......

问题出在这里:包含在#videodiv 中并填充整个 div 的 HTML5 视频播放器会捕获所有发生的点击。这样做是为了触发播放器的播放/暂停功能,但随后不允许任何程序员为包含的 div 设置 jQuery 单击功能。

幸运的是,在这种情况下,#videodiv 是一个 100% 全身宽度的 div,并且具有 100 像素的精确高度。因此,考虑到上面的问题,另一种方法是确定我们是否可以捕获发生在页面前 100 个像素中的任何点击HTML 文档(而不是 div),然后触发函数。

换句话说,我们如何使用 jQuery 来检测页面前 100 个像素内的任意位置的鼠标点击,然后将 div videodiv 设置为 250px?

替代/更好的解决方案绝对非常受欢迎,但 jQuery 是首选方法。

【问题讨论】:

【参考方案1】:

这样的事情应该可以工作 - 更改宽度和高度值以满足您的需求。 pageX 是横向的,pageY 是垂直的,所以我只是在左上角映射了一个 100x100 的空间。更改它以适应您的需求:

// Bind the click event to the body - any static parent container will do
$('body').on('click', function(e) 

    // Fire the callback if the click was in the top 100px by 100px
    if (e.pageX <= 100 && e.pageY <= 100) 

        // Prevent crazy animations and redundant handling
        $(this).off('click'); 

        // Scale the video to the appropriate size
        $('#videodiv').animate(
            width  : '250px',
            height : '250px'
         , 1000);
    
);

这是一个演示:http://jsfiddle.net/bKm4U/

【讨论】:

只需将该视频大小调整逻辑设置为一个函数,并将其绑定到 body click 以及 video.play() 事件。然后这两个动作都会调整 div 的大小。【参考方案2】:

我已经通过一个单独的 *** 问题提供的以下答案解决了这个问题,位于此处:Detect when an HTML5 video finishes

只需两步:

    使用 jQuery 检测 onplay 运行 jQuery 函数

如您所见,HTML5 极其简单;我只希望文档更易于访问/搜索。

【讨论】:

以上是关于jQuery - 检测特定像素区域的点击,然后执行功能的主要内容,如果未能解决你的问题,请参考以下文章

检测白色像素密度低的区域

OpenCV:改变像素的颜色

谷歌地图检测到一个国家特定区域内的点击

检测二进制图像中的高密度像素区域

检测 SpriteKit 中节点特定区域的触摸

目标检测基础