2016-11-28 174 views
0

我试图让我的网站上工作的大型弹出式jQuery库。Magnific Popup将不起作用

看到我下面的HTML;它似乎正确地包含样式表和脚本。你会发现我使用的是:

<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> 

,而不是推荐:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 

,但我已经尝试与后者取代前者,它仍然无法正常工作。完整的HTML:

<!DOCTYPE html> 
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="styles/normalize.css"> 
<link rel="stylesheet" href="styles/mystyles.css"> 
<link rel="stylesheet" href="dimsemenov-Magnific-Popup-2ff1692/dist/magnific-popup.css"> 
<link href="https://fonts.googleapis.com/css?family=Cormorant+Garamond:400,600,700|Inconsolata|Indie+Flower|Oswald:400,700|Taviraj:400,600,700" rel="stylesheet"> 
<link rel='shortcut icon' type='image/x-icon' href='/favicon.ico' /> 
<title>Zach Sedefian</title> 
</head> 
<body> 
<div class="top"> 
    <h1>Personal page</h1> 
</div> 
<div class="left"> 
    <nav> 
     <a class="nav-link" id="link-1">About</a> 
     <a class="nav-link" id="link-2">Web</a> 
     <a class="nav-link" id="link-3">Music</a> 
     <a class="nav-link" id="link-4" onclick=>Photo</a> 
     <a class="nav-link" id="link-5">Contact</a> 
    </nav> 
</div> 
<div class="main"> 
    <p class="main-p">Welcome. Use the sidebar to navigate.</p> 
</div> 

我知道这是奇怪的,我通过点击()函数中添加相关的IMG/DIV HTML,如下所示:

$('#link-4').click(function(){ 
$('.main').html(""); 
$('.main').html('<div class="photo-gallery"><div class="photo-container"><a class="test" href="images/mosque-L.jpg"><img class="test-img" src="images/mosque-Q.jpg"></a></div><div class="photo-container"><a href="images/square-L.jpg"><img src="images/square-Q.jpg"></a></div><div class="photo-container"><a href="images/light-L.jpg"><img src="images/light-Q.jpg"></a></div><div class="photo-container"><a href="images/arch-L.jpg"><img src="images/arch-Q.jpg"></a></div><div class="photo-container"><a href="images/cows-L.jpg"><img src="images/cows-Q.jpg"></a></div><div class="photo-container"><a href="images/land-L.jpg"><img src="images/land-Q.jpg"></a></div><div class="photo-container"><a href="images/cascade-L.jpg"><img src="images/cascade-Q.jpg"></a></div><div class="photo-container"><a href="images/guard-L.jpg"><img src="images/guard-Q.jpg"></a></div><div class="photo-container"><a href="images/green-L.jpg"><img src="images/green-Q.jpg"></a></div><div class="photo-container"><a href="images/edu-L.jpg"><img src="images/edu-Q.jpg"></a></div><div class="photo-container"><a href="images/biz-L.jpg"><img src="images/biz-Q.jpg"></a></div><div class="photo-container"><a href="images/cal-L.jpg"><img src="images/cal-Q.jpg"></a></div></div><p><a href="https://www.flickr.com/photos/[email protected]/">More on flickr</a></p>'); 
}); 

我试图把它放在实际的index.html文件中,但它也没有改变。

我试图以各种方式调用app.js中的magnificpopup()函数。第一种是我希望拥有它的方式,最底层的两种是调用它的最简单的方法(也不起作用)。

$('.photo-container').magnificPopup({ 
    delegate: 'a', // child items selector, by clicking on it popup will open 
    type: 'image', 
    closeOnContentClick: true, 
    gallery:{enabled:true} 
}); 

$('.test').magnificPopup({type:'image'}); 
$('.test-img').magnificPopup({type:'image'}); 

没有得到任何调试错误。任何帮助将不胜感激。这是我第一次来到这个网站,并没有在其他人的线索上找到答案。提前致谢。

+0

'的onclick =''中的链接4'是不正确的。它需要在最低限度上是“onclick =”“'(当然不会做任何事情) –

+0

如果您通过点击处理程序添加HTML - 在相关节点存在之前'magnificPopup'已经初始化。如果您想继续使用此方法,请在同一个点击处理程序中调用'magnificPopup'并将其包装在'setTimeout'中以确保相关DOM已经呈现。 –

+0

花时间并澄清您的帖子,因为它目前不是。 – nyedidikeke

回答

0

明白了!您必须输入完整路径。

$('div').magnificPopup({ 
delegate: 'div div a', // child items selector, by clicking on it popup will open 
type: 'image', 
closeOnContentClick: true, 
gallery:{enabled:true} 
}); 
+0

请注意,它看起来像你正在向页面上的每个div添加插件。这会损害您网站的表现。最好找到一个更好的选择器,并调整你的委托路径以适应 –

+0

我建议'$('。photo-gallery')。magnificPopup'委托:'div a'' –

0

$('.photo-container').magnificPopup({ ... })只有在找到与该选择符匹配的类时才能使用。如果在该行代码运行后动态添加该类,那么$('.photo-container')将不返回任何元素。

你可以做的是:

$('#link-4').click(function(){ 
    $('.main').html(""); 
    $('.main').html('<div class="photo-gallery"><div class="photo-container"><a class="test" href="images/mosque-L.jpg"><img class="test-img" src="images/mosque-Q.jpg"></a></div><div class="photo-container"><a href="images/square-L.jpg"><img src="images/square-Q.jpg"></a></div><div class="photo-container"><a href="images/light-L.jpg"><img src="images/light-Q.jpg"></a></div><div class="photo-container"><a href="images/arch-L.jpg"><img src="images/arch-Q.jpg"></a></div><div class="photo-container"><a href="images/cows-L.jpg"><img src="images/cows-Q.jpg"></a></div><div class="photo-container"><a href="images/land-L.jpg"><img src="images/land-Q.jpg"></a></div><div class="photo-container"><a href="images/cascade-L.jpg"><img src="images/cascade-Q.jpg"></a></div><div class="photo-container"><a href="images/guard-L.jpg"><img src="images/guard-Q.jpg"></a></div><div class="photo-container"><a href="images/green-L.jpg"><img src="images/green-Q.jpg"></a></div><div class="photo-container"><a href="images/edu-L.jpg"><img src="images/edu-Q.jpg"></a></div><div class="photo-container"><a href="images/biz-L.jpg"><img src="images/biz-Q.jpg"></a></div><div class="photo-container"><a href="images/cal-L.jpg"><img src="images/cal-Q.jpg"></a></div></div><p><a href="https://www.flickr.com/photos/[email protected]/">More on flickr</a></p>'); 

    $('.photo-container').magnificPopup({ 
     delegate: 'a', // child items selector, by clicking on it popup will open 
     type: 'image', 
     closeOnContentClick: true, 
     gallery:{enabled:true} 
    }); 
});