Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套放大弹出窗口_Javascript_Jquery_Overriding_Magnific Popup - Fatal编程技术网

Javascript 嵌套放大弹出窗口

Javascript 嵌套放大弹出窗口,javascript,jquery,overriding,magnific-popup,Javascript,Jquery,Overriding,Magnific Popup,我想从一个放大弹出项传递到另一个,执行一些操作,然后返回到第一个。 为了实现这一点,我使用$.magnificpoup.instance.close覆盖close方法(在打开第二个元素之前),在其中调用$.magnificpoup.proto.open()方法。这似乎有效,但我无法将其重写回初始行为,并且第一个弹出窗口的关闭按钮仍会触发修改后的行为。下面是一个对应的JSFIDLE: 问题是我必须关闭放大弹出窗口的第一个实例。 这篇文章帮助我找到了一个可行的解决方案: 我的工作方案如下: 你的小

我想从一个放大弹出项传递到另一个,执行一些操作,然后返回到第一个。 为了实现这一点,我使用$.magnificpoup.instance.close覆盖close方法(在打开第二个元素之前),在其中调用$.magnificpoup.proto.open()方法。这似乎有效,但我无法将其重写回初始行为,并且第一个弹出窗口的关闭按钮仍会触发修改后的行为。下面是一个对应的JSFIDLE:


问题是我必须关闭放大弹出窗口的第一个实例。 这篇文章帮助我找到了一个可行的解决方案:

我的工作方案如下:


你的小提琴语法有问题,请纠正它。
$('.first-popup-link').magnificPopup({
    closeBtnInside:true,
    callbacks: {
    open: function() {
      /*var magnificPopup = $.magnificPopup.instance;*/
    },
    open: function() {
      $.magnificPopup.instance.close = function() {
        console.log('close override is working');
        $.magnificPopup.proto.open({
          callbacks:{
            open: function() {
              console.log('open callback');
              $.magnificPopup.instance.close = function() {
                $.magnificPopup.proto.close.call(this);
                console.log('open close callback');
              }
            }
          },
          items: {
            src: '#first-popup' 
          },
          type: 'inline'         
        });     
      }
    }
  }
 });

$('.second-popup-link').magnificPopup({
    closeBtnInside:true,
    closeOnBgClick: false,
    callbacks: {
    beforeOpen: function() {
      $.magnificPopup.instance.close = function() {
        $.magnificPopup.proto.close.call(this);
        console.log('2nd close override is not working');
      }
    }
  }
});
$('.first-popup-link').magnificPopup({
  type: 'inline',
  closeBtnInside: true,
  closeOnBgClick: false,
  closeOnContentClick: false,
  callbacks: {
    beforeOpen: function() {
      $.magnificPopup.instance.close = function() {
      $.magnificPopup.proto.close.call(this);
      };
      // $.magnificPopup.proto.close.call(this);
      console.log('before open has been initiated');
    }
  }
});

$('.second-popup-link').click(function() {
  $.magnificPopup.proto.close.call(this);
});

$('.second-popup-link').magnificPopup({
  type: 'inline',
  closeBtnInside: true,
  closeOnBgClick: false,
  closeOnContentClick: false,
  callbacks: {
    beforeOpen: function() {
      $.magnificPopup.instance.close = function() {
        $.magnificPopup.proto.close.call(this);
        $('.first-popup-link').trigger('click');

      };
      // $.magnificPopup.proto.close.call(this);
      console.log('before open has been initiated');
    },
      close: function() {
      console.log('Popup 2 close has been initiated');

    }
  }
});