2016-06-16 3 views
0

Dmitry Semenov의 PhotoSwipe (link)와 Magnificent Popup (link)의 Ajax Type을 결합하려고합니다. 더 구체적으로 말해, 내 index.html 파일에 대한 링크가 있습니다. 클릭하면 Ajax Type Magnificent Popup이 표시되어 내용을 other.html으로 표시합니다. 이 팝업 내 (즉, other.html 파일 내)에는 PhotoSwipe 이미지 갤러리가 있습니다. 이미지를 클릭하면 PhotoSwipe 갤러리가 예상대로 나타나고 정상적으로 작동합니다. 그러나 닫기 버튼 ('x'아이콘)을 클릭하거나 ESC 키를 누르면 PhotoSwipe와 Magnificent Popup이 모두 닫힙니다. PhotoSwipe 팝업 만 닫히도록이 동작을 어떻게 변경할 수 있습니까? PhotoSwipe 팝업이 표시되어 Magnificic Popup이 PhotoSwipe가 닫힐 때까지 클릭이나 키 누르기에 응답하지 않도록 Magnificic Popup을 "비활성화"할 수 있습니까?PhotoSwipe와 Magnificent Popup (Ajax Type)을 결합하십시오.

나는 자바 스크립트에 대한 기본적인 지식 만 가지고 있기 때문에 대답에 대한 "손 잡고"접근 방식을 고맙게 생각합니다.

답변

1

나는 Magnific와 Colorbox를 결합하는 것과 비슷한 것을했다. Magnific는 소스를 변경하지 않고 코드의 일부를 무시할 수있는 기능을 가지고 있습니다 (documented in the FAQ). 내 경우에는,이 모습 :

// Prevent "Escape" from closing Magnific popup when Colorbox popup is open 
$.magnificPopup.instance.close = function() { 
    if ($("#colorbox").is(":visible")) { 
    // Don't do anything with Magnific if Colorbox is doing its thing 
    return false; 
    } else { 
    // Do what it would normally do 
    $.magnificPopup.proto.close.call(this); 
    } 
}; 

을 당신은 뭔가 PhotoSwipe 별에 if 테스트를 변경해야합니다. 아마도 해당 라인을 if ($(".pswp--open").length > 0) {으로 교체하면됩니다. (자바 스크립트는 pswp--open 클래스를 가진 요소의 개수를 (jQuery를 통해) 계산합니다 (PhotoSwipe 데모에서 적어도 마크 업에 추가되는 클래스로 열립니다).

+0

감사합니다. 이것은 실제로 작동합니다! 그러나 Magnificic은 PhotoSwipe 팝업의 오른쪽 상단 모서리에 "닫기"버튼을 추가하여 PhotoSwipe에 속한 닫기 버튼을 클릭 할 수 없도록했습니다. 이것은 묻습니다 : PhotoSwipe가 시작된 한 모든 Magnific 기능을 비활성화하는 방법이 있습니까? – Alarik

+1

Magnific의 closeBtnInside 옵션 (PhotoSwipe에 비슷한 것이 있는지 확실하지 않음) 또는'.button.mfp-close'에 맞게 CSS를 조정하여 "x"의 위치를 ​​조정할 수 있어야합니다. 또 다른 옵션 인 PhotoSwipe를 열면 Magnificic 팝업을 닫은 다음 PhotoSwipe close 이벤트가 호출 될 때 다시 엽니 다. 누군가가 Magnific의 두 인스턴스를 제외 하고이 피들에서 않았다 : https://jsfiddle.net/matthieuG/zt4coq8f/1/ –

+0

나는'$ ('. mfp-close')를 추가하여 "x"를 없애려고했다. .css ('visibility', 'hidden');'PhotoSwipe를 시작하는 스크립트. 이렇게하면 PhotoSwipe의 "x"와 Magnificio의 "x"가 모두 제거됩니다. PhotoSwipe가 닫힐 때 '가시성'을 다시 '표시'로 설정하고 싶습니다. 그러나 작동시키지 못합니다. 왜'var el = document.getElementsByClassName ('mfp-close'); \t \t el.style.visibility = "visible";''close' 함수로 작업 하시겠습니까? 이런 식으로 할 수있는 방법이 있습니까? – Alarik

관련 문제