#javascript #jquery #html #css #image
#javascript #jquery #HTML #css #изображение
Вопрос:
Это может быть очень глупый вопрос, я новичок в javascript, я создаю галерею с помощью http://photoswipe.com / библиотека js , я загружаю библиотеку js с официального сайта, я использовал приведенный пример index.html страница Нормальная, работает нормально. Но моя проблема, когда я добавляю div $('.gallery-row').append('<div class="gallery-item"><a href="images/full/003.jpg"><img src="images/thumb/003.jpg" alt="Image 003" /></a></div>');
при <div class="gallery-row"></div>
использовании метода добавления jquery из функции загрузки. Моя проблема: изображение отображается, но когда я нажимаю на изображение, оно не открывается с помощью swipe div. Я трачу весь свой день, но ничего не получил.
мой код:
<!DOCTYPE html>
<html>
<head>
<title>PhotoSwipe</title>
<meta name="author" content="Code Computerlove - http://www.codecomputerlove.com/" />
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />
<link href="styles.css" type="text/css" rel="stylesheet" />
<link href="photoswipe.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="lib/simple-inheritance.min.js"></script>
<script type="text/javascript" src="code-photoswipe-1.0.11.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
// Set up PhotoSwipe with all anchor tags in the Gallery container
document.addEventListener('DOMContentLoaded', function(){
Code.photoSwipe('a', '#Gallery');
}, false);
function load(){
//append div from this function
$('.gallery-row').append('<div class="gallery-item"><a href="images/full /003.jpg"><img src="images/thumb/003.jpg" alt="Image 003" /></a></div>');
}
</script>
</head>
<body onLoad="load()">
<div id="Header">
<a href="http://www.codecomputerlove.com"><img src="images/codecomputerlovelogo.gif" width="230" height="48" alt="Code Computerlove" /></a>
</div>
<div id="MainContent">
<div class="page-content">
<h1>PhotoSwipe</h1>
</div>
<div id="Gallery">
<div class="gallery-row">
<!--
<div class="gallery-item"><a href="images/full/001.jpg"><img src="images/thumb/001.jpg" alt="Image 001" /></a></div>
<div class="gallery-item"><a href="images/full/002.jpg"><img src="images/thumb/002.jpg" alt="Image 002" /></a></div>
<div class="gallery-item"><a href="images/full/003.jpg"><img src="images/thumb/003.jpg" alt="Image 003" /></a></div>
-->
</div>
</div>
</div>
</body>
</html>
Ответ №1:
Попробуйте выполнить append
в DOMContentLoaded
обработчике, прежде чем вызывать Code.photoSwipe
. Кроме того, jQuery предоставляет более короткий способ записи этого:
<script>
$(function() {
$('.gallery-row').append('<div class="gallery-item"><a href="images/full /003.jpg"><img src="images/thumb/003.jpg" alt="Image 003" /></a></div>');
Code.photoSwipe('a', '#Gallery');
});
</script>
Когда вы это сделаете, удалите onload="load()"
из своего <body>
тега.
Комментарии:
1. Я просто отмечу, что я пытался создать скрипку, но, по крайней мере, скрипт photoSwipe, используемый на их демонстрационной странице, использует такие вещи, как
live()
и$.browser
с jQuery 1.5.2, и на сайте говорится, что новая версия находится в стадии разработки. Я не тестировал загрузку скрипта, чтобы узнать, получил ли я обновленную версию или нет, но по-прежнему кажется, что плагин старый и устаревший. Просто говорю?2. спасибо за ответ, наконец, он работает, и я хочу поблагодарить вас оооооочень много 🙂
3. @Barmar еще один мой вопрос: когда мы нажимаем на изображение, изображение открывается в PhotoSwipe div. мой вопрос, как получить URL-адрес изображения в этом div.
4. Я не знаю, навскидку, это кажется специфичным для PhotoSwipe, о котором я никогда раньше не слышал.
Ответ №2:
Возможно, это дополнительное пространство в href для вашего тега a? Попробуйте изменить «изображения / полные /003.jpg » чтобы «images/full/003.jpg «
Ответ №3:
Я думаю, вам нужно это сделать :
document.addEventListener('DOMContentLoaded', function(){
Code.photoSwipe('a', '#Gallery');
}, false);
После добавления
После некоторого теста DOMContentLoaded запускается перед onload
Комментарии:
1. Не имеет значения, куда вы это помещаете, потому что оно запускается при загрузке DOM, а не при его добавлении.
2. После некоторого теста DOMContentLoaded запускается перед onload