【问题标题】:Area tag to display and hide div显示和隐藏 div 的区域标签
【发布时间】:2015-05-18 22:11:17
【问题描述】:

我有一个区域地图,当我单击特定区域时,我想显示与该选择相对应的某个 div。 IE。如果您在地图中单击 square1,它将显示 div1。如果单击 square2,它会隐藏 div1 并显示 div2。 到目前为止,我无法获得预期的结果。如果有更好的方法来解决我的问题,我愿意接受建议。

<map name="FPMap0" id="FPMap0">
<area item="first" href="#" shape="polygon" coords="347, 79, 349, 201, 449,   248, 540, 204, 541, 82, 448, 34" />
<area item="second" href="#" shape="polygon" coords="560, 81, 562, 206, 660, 255, 756, 208, 758, 81, 659, 31"/>
</map>

<img width="1000" height="667" src="picture.png" usemap="#FPMap0" alt=""/>​

<div id="first">Text1</div>
<div id="second">Text2</div>

<script>
  $("map#FPMap0").click(function(ev){
  var target = $(ev.target);
  var targetId = target.attr('id');
  if(targetId == 'first') {
    $("#first").show();
  } else if(targetId=='second') {
    $("#second").show();
  }
  });
</script>

【问题讨论】:

    标签: jquery html dictionary area


    【解决方案1】:

    因为您的 area 标记具有与 div id 匹配的属性(项目),您可以简单地执行此操作...

    $('area').on('click',function() {
        $('div').hide();
        $('#' + $(this).attr('item')).show();
    });
    

    Example

    【讨论】:

    • Fiddle 如您所见,两个 div 始终可见...不知道我做错了什么
    • 为了更正我的说法,页面加载时 div 不可见,但是当我单击其中一个区域时它没有响应。
    • 您的示例 JSfiddle 不起作用有几个原因。 1. 当 jsfiddle 使用安全连接 (https) 时,您试图通过非安全连接 (http) 加载 jquery。在这种情况下,该文件将被阻止。 2. 您的 jquery URL 中缺少右引号 ...
    • 3.您的 javascript 需要放置在您尝试尝试的元素之后。如果代码必须放在元素之前,则必须将代码包装在 document.ready 块中,以确保在加载 DOM 之前不会执行代码。查看您的浏览器控制台可以帮助您非常轻松地找到此类错误 - 这是一个固定示例 - jsfiddle.net/s905o7b4/5
    • 谢谢!效果很好!!还有一个问题。使用您的方法,每次我单击该区域时,它都会显示与单击关联的 div,并隐藏所有其他 div。就我而言,我只有一个应该隐藏的 div 子集,即“第二、第三、第四”,但 div“六和七”不应该受到影响。有什么办法让你的代码适应这种情况吗?
    【解决方案2】:

    你的代码有很多错误。

    试试这个:

    $( document ).ready(function() {
        $('#first, #second').hide();
    $("map[name=FPMap0] area").on('click', function () {
        var target = $(this).attr('item');
        if (target == 'first') {
            $('#second').hide();
            $("#first").show();
        } else if (target == 'second') {
            $('#first').hide();
            $("#second").show();
        }
    });
    });
    

    JSFiddle Demo

    【讨论】:

    • 我尝试了您的方法,但两个 div 始终可见。不完全确定我做错了什么。这是代码Fiddle
    • 感谢您的努力。我复制并粘贴了代码,但 div 都在加载时显示,点击时没有任何反应。我是否需要专门有两个单独的文件(html 和 javascript)才能使此解决方案起作用?我将其嵌入到共享点中,因此我需要将整个代码放入一个文件中。
    • 对不起@imbondbaby,但它仍然没有响应。无论我点击什么,我都看不到 div 出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多