jquery - 如何使用 jQuery 使图像映射区域可点击?

标签 jquery html css imagemap

最小的完整示例 ( jsfiddle ):

<!DOCTYPE html>

<html>
    <head>
        <title>Test</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    </head>
    <body>
        <map name="myMap" id="myMap">
            <area shape="rect" coords="10,10,100,100">
        </map>
        <img src="http://placehold.it/350x150" alt="" usemap="#myMap">

        <script type="text/javascript">
            $(function () {
                $("map#myMap area").click(function () {
                    alert("click!");
                });
            });
        </script>
    </body>
</html>

当鼠标悬停在图片的左上角时,不同的浏览器会做什么:

  • Chome:显示“手形”光标并对点击使用react(这是我真正想要的行为)。
  • Firefox:不显示“手形”光标,但对点击有反应。
  • IEEdge:既不显示“手形”光标也不对点击使用react。

我知道我可以将 href 放在 area 标签中,但它是一个高度动态的网站,我想对 area 做各种 jQuery 的事情(悬停突出显示,点击处理程序, ETC。)。我也知道我可以用 area { cursor: pointer; 修复 Firefox 的行为。 },但这对 IE 和 Edge 没有帮助。

我的代码中是否存在错误,或者这是 IE/Edge 中的错误?

最佳答案

您需要href。而且你必须忽略点击功能中的事件。此外,如果您为每个区域指定一个 ID,或者如果某些区域以相同的方式响应,则使用一个类(即 class="areaRed")

最具可读性

例如

<map name="myMap" id="myMap">
 <area id="area1" shape="rect" coords="10,10,100,100" href="#">
</map>

在你的点击函数中

$("#area1").on("click", function(e){
  e.preventDefault();
  /*
   your code here
  */
});

关于jquery - 如何使用 jQuery 使图像映射区域可点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962477/

相关文章:

javascript - 使用 CSS 过渡将元素设置为显示和加宽

javascript - 从外部 JSON 文件生成选择列表

javascript - Jquery:属性禁用通过 if else 或直接放置条件启用

html - 如何在不知道元素高度的情况下将第二个元素定位到顶部

javascript - 在出错时更改文本字段边框的最简单方法

html - 将按钮添加到列表组 Bootstrap 上的链接项

javascript - 无法通过窗口对象访问全局变量 - 间歇性地(?!)

javascript - 您可以根据视口(viewport)大小制作条件语句来使用或不使用某些 JavaScript 吗?

css - 关于调整 HTML 元素大小的问题

html - CSS 全 Angular 居中导航栏