【问题标题】:Maphilight - Need it to Deactivate Highlight On New Mouse ClickMaphilight - 需要它来停用新鼠标点击时的突出显示
【发布时间】:2012-09-09 04:00:07
【问题描述】:

我正在使用 David Lynch 的 Maphilight,只要让它在鼠标悬停时突出显示,效果很好。我遇到的问题并且似乎没有任何示例是单击一个区域时,使区域 A. 突出显示并保持点亮,B. 单击另一个区域时停用。

基本上,我正在使用演示页面中的脚本并尝试相应地对其进行修改,但是,我尝试过的一切都没有奏效。它看起来非常简单明了,所以我很惊讶几乎没有关于此功能的文档。

有人有什么想法吗?基本上,我用作地图的图像是一个圆圈,分为四个象限。鼠标悬停时,每个象限都应亮起,单击时保持亮起,直到选择了地图上的新象限。这是我在脚本中使用的内容:

$('.map').maphilight({fillColor: 'ff0000'});

$('#q1, #q2, #q3, #q4').click(function(e) {
        e.preventDefault();
        var data = $(this).mouseout().data('maphilight') || {};
        data.alwaysOn = !data.alwaysOn;
        $(this).data('maphilight', data).trigger('alwaysOn.maphilight');
    });

您可能有任何帮助或建议都会很棒。

更新:我正在处理的页面的在线链接是http://test.dpigraphics.net/process.php

【问题讨论】:

  • 唯一的问题是指向海报示例的链接不再起作用,因此很难看出该解决方案将在什么上下文中使用。
  • 您尝试过答案中的解决方案吗?看起来您只需在点击处理程序中添加一行即可首先关闭所有高亮显示。
  • 我已经做到了 - 添加任何时间条件从而关闭突出显示似乎不会影响任何事情。我已经尝试了其他人在这里提供的各种解决方案,但似乎都没有奏效。
  • 我实际上做了一些探索和修改该示例中的代码并使其正常工作。谢谢你的建议。我可能不会重新访问该帖子以获得答案。

标签: javascript jquery maphilight


【解决方案1】:

试试这个:

$('map area').click(function(e) {
    e.preventDefault();
    var clickedArea = $(this); // remember clicked area
    // foreach area
    $('map area').each(function() {
        hData = $(this).data('maphilight') || {}; // get
        hData.alwaysOn = $(this).is(clickedArea); // modify
        $(this).data('maphilight', hData ).trigger('alwaysOn.maphilight'); // set
    });

});

(至少需要 jQuery 1.6。)

【讨论】:

  • 此解决方案在此页面上的所有解决方案中效果最佳。我只希望当您选择一个时,如果您将鼠标悬停在新区域上,突出显示的区域将被隐藏。
【解决方案2】:

在玩了一些 jsfiddle 之后,并使用了上面 cmets 的一些建议,我找到了解决问题的方法:

   $('#process area').click(function() {
    $(this).data('maphilight', { alwaysOn: true }).trigger('alwaysOn.maphilight');

    $('.selected').data('maphilight', {
        alwaysOn: false
    }).trigger('alwaysOn.maphilight');

    $('#process area').removeClass('selected');

    $(this).addClass('selected');

这段代码几乎就是我希望我的地图工作的方式。从一个区域切换到另一个区域时,它确实会闪烁一点,但它似乎工作得很好。希望这对将来的其他人有所帮助...

【讨论】:

  • 我喜欢这个解决方案 - 只有一个音符 - 缺少函数“});”的结尾如果用户多次点击同一区域,这个就不好处理了:)
  • 如果您选择地图的一个区域,选择一个新区域,然后返回并选择上一个区域,则此解决方案不起作用。它永远不会重新打开。
【解决方案3】:

只有 jquery&maphighlight 有解决方案!

诀窍在于处理好 maphighlight 的输入属性之一:alwaysOn:

$( "#map-tag area" ).click(function(){
    $(this).data('maphilight', { 
          alwaysOn: true 
    }).trigger('alwaysOn.maphilight');
    //check if area wasnt already selected - otherwise gets buggy
    if( !$(this).hasClass('selected') ){ 
      $('.selected').data('maphilight', {
          alwaysOn: false
      }).trigger('alwaysOn.maphilight');
      $('#map-tag area').removeClass('selected');
      $(this).addClass('selected');
    }

});

编辑:确保您拥有最新的 maphilight ! :http://davidlynch.org/projects/maphilight/jquery.maphilight.min.js,来自maphilight官网。

【讨论】:

    【解决方案4】:

    导入两个js文件.. jquery.min.js jquery.maphilight.js

    那么,

     $(function() {
    
       $('.map').maphilight({strokeColor:'808080',strokeWidth:10,strokeOpacity: 1,fillColor:'00c31d'});
    
        });
    

    --HTML部分

    <img src="YOUR IMAGE" class="map" usemap="#image-maps"/>
    <map id="image-maps">
    
    <area>
    </map>
    

    【讨论】:

      【解决方案5】:

      只有 jquery&maphighlight 有解决方案!

      诀窍在于处理好 maphighlight 的输入属性之一:alwaysOn:

      $( "#map-tag area" ).click(function(){
          $(this).data('maphilight', { 
                alwaysOn: true 
          }).trigger('alwaysOn.maphilight');
          //check if area wasnt already selected - otherwise gets buggy
          if( !$(this).hasClass('selected') ){ 
            $('.selected').data('maphilight', {
                alwaysOn: false
            }).trigger('alwaysOn.maphilight');
            $('#map-tag area').removeClass('selected');
            $(this).addClass('selected');
          }
      
      });
      

      编辑:确保您拥有最新的 maphilight ! :http://davidlynch.org/projects/maphilight/jquery.maphilight.min.js,来自maphilight官网。

      【讨论】:

      • 这是非常错误的。当您选择地图的一个区域时,选择一个新区域,然后返回到前一个区域,它们都保持选中状态。不知道发生了什么,但效果不佳。
      • @EHerman 这是废话,因为有一个全局 removeClass,你有最新的 maphighlight 吗?您是否有其他一些 JS 错误会阻止它处理?我知道有一些旧版本在盘旋……这对我有用……
      • 我认为我没有旧版本。我前两天刚下载。我知道,通过代码看起来它应该可以工作,但对我来说它导致了一些问题。我采用了另一种方法,我现在将发布。
      • 您是否使用我提供的链接上的 maphightlight 进行了尝试? ,你在谷歌浏览器中测试过吗?
      • 是的,先生,我在 Chrome 中开发。但我刚刚从 github 上下载了最新的亮点
      猜你喜欢
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2014-11-29
      • 1970-01-01
      相关资源
      最近更新 更多