2016-11-28 87 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} 
    }); 
});