За последние 24 часа нас посетил 21841 программист и 1013 роботов. Сейчас ищут 660 программистов ...

отмена функции при повторном клике

Тема в разделе "JavaScript и AJAX", создана пользователем nighty386, 7 ноя 2020.

Метки:
  1. nighty386

    nighty386 Новичок

    С нами с:
    7 ноя 2020
    Сообщения:
    11
    Симпатии:
    0
    Добрый вечер! помогите разобраться , есть карта метро и счестчик metromap-count когда выделяешь станцию он ее считают и записывает как 1 , но если нажать повторно он убирает выделение станции а счетчик становится 2 , два скрина есть и код , хелпп. При выделении html присваивает station selected

    тоесть грубо говоря он выделяет станцию при нажатии а при повторном только убирает css эффект а саму станцию нет

    Код (Javascript):
    1. function in_array(needle, haystack, strict)
    2. {
    3.     var found = false, key, strict = !!strict;
    4.     for (key in haystack) {if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {found = true;break;}}
    5.     return found;
    6. }
    7. /**/
    8.  
    9. function metromapGroup(groupID)
    10. {
    11.     $("#metromap-loader").stop().animate({opacity: "1"}, 500, function()
    12.     {
    13.         var iC = parseInt(metromap_stationgroups[groupID].length),
    14.             i = 0;
    15.  
    16.         $.each(metromap_stationgroups[groupID], function(k,id)
    17.         {
    18.             i++;
    19.  
    20.             if (!in_array(id, metromap_selected))
    21.             {
    22.                 $("#metromap-map .station[data-id="+id+"]").addClass('selected');
    23.                 metromap_selected.push(id);
    24.             }
    25.  
    26.             if (iC==i)
    27.             {
    28.                 metromapSync();
    29.                 $("#metromap-loader").animate({opacity: "0"}, 500);
    30.             }
    31.         });
    32.     });
    33.  
    34.     return false;
    35. }
    36.  
    37. function metromapShow()
    38. {
    39.     $('body').addClass('metromap-body')
    40.     $("#metromap").show();
    41.     return false;
    42. }
    43.  
    44. function metromapHide()
    45. {
    46.     $('body').removeClass('metromap-body')
    47.     $("#metromap").hide();
    48.     return false;
    49. }
    50.  
    51. function metromapClear()
    52. {
    53.     metromap_selected = [];
    54.  
    55.     $("#metromap-cont").html('');
    56.     $("#metromap-clear").hide();
    57.     $("#metromap-map .station").removeClass('selected');
    58.     $("#metromap-count").text(0);
    59. }
    60.  
    61. function metromapSync()
    62. {
    63.     _metromapVisual();
    64.  
    65.     if (parseInt(metromap_selected.length)>0)
    66.     {
    67.         $("#metromap-clear").show();
    68.  
    69.         if (!$("#filter-btn-more").hasClass('hided')) $("#filter-btn-more").trigger('click');
    70.     }
    71.     else $("#metromap-clear").hide();
    72.  
    73.     $("#metromap-count").text(parseInt(metromap_selected.length));
    74. }
    75.  
    76. function metromapInit(url)
    77. {
    78.     $.ajax({url: url, crossDomain:true, dataType:'html', cache: false}).done(function(html)
    79.     {
    80.         $("#metromap").html(html);
    81.  
    82.         metromapSync();
    83.         $.each(metromap_stations,function(id,station)
    84.         {
    85.             var html_class = !in_array(id, metromap_selected) ? "station" : "station selected";
    86.        
    87.             $('<div class="'+html_class+'" style="top:'+station.y+'px;left:'+station.x+'px" data-id="'+id+'">'+station.html+'</div>').appendTo("#metromap-map");
    88.         });
    89.     });
    90. }
    91.  
    92. $(document).on('keydown', function(e) { if(e.keyCode==27) metromapHide(); });
    93. $(document).on('click', '#metromap-bg', function() { return metromapHide(); });
    94.  
    95. $(document).on('click', '#metromap-map .station', function()
    96. {
    97.     $(this).toggleClass('selected');
    98.  
    99.     metromap_selected.push($(this).attr('data-id'));
    100.  
    101.     metromapSync();
    102.    
    103.     return false;
    104. });
     

    Вложения:

    • 1.jpeg
      1.jpeg
      Размер файла:
      30,2 КБ
      Просмотров:
      2
    • 2.jpeg
      2.jpeg
      Размер файла:
      20,8 КБ
      Просмотров:
      2