简体   繁体   English

两个相同的弹出插件在一页上不起作用

[英]Two the same popup plugins not working on one page

I am using popup plugin presented by some user of stackoverflow. 我正在使用某些stackoverflow用户提供的弹出插件。 It works perfectly, but I wanted to add another one on the same page and it does some strange things. 它运行完美,但是我想在同一页面上添加另一个,它做了一些奇怪的事情。 The first one works fine, the second one opens, but when i want to close it, it opens the first one instead. 第一个工作正常,第二个打开,但是当我要关闭它时,它将打开第一个。 Could someone give me any clue please? 有人可以给我任何线索吗? I have changed all the classes, IDs etc 我已经更改了所有类,ID等

First one: 第一:

    ...
    <a href='/contact' class='menuButton' id='contact'>KONTAKT</a>
    <div class="messagepop pop">
      <p>popup message1</p>
    </div>
    ...

<script>
  function deselect(e) {
    $('.pop').slideFadeToggle(function() {
      e.removeClass('selected');
    });    
  }

  $(function() {
    $('#contact').on('click', function() {
      if($(this).hasClass('selected')) {
        deselect($(this));               
      } else {
        $(this).addClass('selected');
        $('.pop').slideFadeToggle();
      }
      return false;
    });

    $('.close').on('click', function() {
      deselect($('#contact'));
      return false;
    });
  });

  $.fn.slideFadeToggle = function(easing, callback) {
    return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
  };

</script>

Secone one: 塞康一号:

   ...
   <a href='/contact2' class='menuButton' id='contact2'>BILETY</a>
   <div class='messagepop2 pop2'>
     <p>popup message 2</p>
   </div>
   ...   

<script>
  function deselect(e) {
    $('.pop2').slideFadeToggle(function() {
      e.removeClass('selected2');
    });    
  }

  $(function() {
    $('#menuButtonBilety').on('click', function() {
      if($(this).hasClass('selected2')) {
        deselect($(this));               
      } else {
        $(this).addClass('selected2');
        $('.pop2').slideFadeToggle();
      }
      return false;
    });

    $('.close2').on('click', function() {
      deselect($('#menuButtonBilety'));
      return false;
    });
  });

  $.fn.slideFadeToggle = function(easing, callback) {
    return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
  };
</script>

EDIT: The script comes from the best answer HERE 编辑:脚本来自此处的最佳答案

In your case probably you are overriding the deselect function. 在您的情况下,您可能要覆盖取消选择功能。

But instead of multiply your code one for each element instance you can set it more general using DOM structure hierarchy, like: 但是,您不必为每个元素实例乘以一个代码,而可以使用DOM结构层次结构将其设置为更通用,例如:

function deselect(e) {
    e.next('.pop').slideFadeToggle(function () {
        e.removeClass('selected');
    });
}

$(function () {
    $('.menuButton').on('click', function () {
        if ($(this).hasClass('selected')) {
            deselect($(this));
        } else {
            $(this).addClass('selected');
            $(this).next('.pop').slideFadeToggle();
        }
        return false;
    });


});

$.fn.slideFadeToggle = function (easing, callback) {
    return this.animate({
        opacity: 'toggle',
        height: 'toggle'
    }, 'fast', easing, callback);
};

Demo: http://jsfiddle.net/IrvinDominin/u2fkff64/ 演示: http//jsfiddle.net/IrvinDominin/u2fkff64/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM