Почему плагин лайтбокса jQuery у меня не работает?

Следуя инструкциям здесь: http://lokeshdhakar.com/projects/lightbox2/ и в книге "JavaScript и jQuery Murach" (на страницах 320 и 321), я пытаюсь добавить функциональность лайтбокса на свой сайт.

Я добавил lightbox.css (и screen.css, думаю, что это также может потребоваться) в папку "Содержимое", а также lightbox.js и jquery.smooth-scroll.min.js (поскольку он был включен в загрузку лайтбокса, и я понял, что это нужно в лайтбоксе) в мою папку Scripts.

Я также добавил в папку "Изображения" следующие изображения, включенные в загрузку лайтбокса: close.png, loading.gif, next.png и prev.png.

У меня есть этот HTML и JQuery код (это весь Default.cshtml на данный момент):

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "el Garrapata - Spoon!!!";
}

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a href="Images/Fullsize/Landscapes/Spring_2013 04 06_2293.jpg" rel="lightbox" ><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2293_th.jpg" width="300" height="200"></a>
    </div>

    <div id="tabs-2">
    </div>

    <div id="tabs-3">
    </div>

    <div id="tabs-4">
    </div>

</div>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#tabs").tabs();
        });
    </script>

... но это не работает: хотя это миниатюрное изображение отображается на вкладке "Весна", нажатие на него просто приводит к тому, что экран становится в основном темным - он становится "серым" почти до непрозрачности.

Загрузка лайтбокса также включает jquery-1.7.2.min.js и jquery-ui-1.8.18.custom.min.js

Я ссылаюсь на новые версии в _SiteLayout.cshtml:

<script src="~/Scripts/jquery-2.0.0.min.js"></script>
<script src="~/Scripts/jquery-ui-1.9.2.min.js"></script>

Может ли это быть проблемой? Я "застрял" с использованием более старых версий jQuery и jQueryUI, если я хочу использовать лайтбокс?

Кстати, я пытался опубликовать это на внутреннем форуме лайтбокса, но не смог войти ни с Fakebook, ни с Google (хотя у меня есть (неохотно в случае первого) аккаунты с обоими; также я попробовал OpenID-джаз, но это похоже, ожидает URL...???)

ОБНОВИТЬ

Примечание: я собираюсь поднять этот вопрос на 100 баллов как можно скорее. Если я получу ответ до этого, я назначу вознаграждение после ответа.

ОБНОВЛЕНИЕ 2

Я переключился на fancyBox, но большое (href) изображение по-прежнему обнимает левую сторону страницы при нажатии на "миниатюру", а не на центр. Вот все Razor, HTML и jQuery (часть кода изображения для краткости опущена):

выбран из _SiteLayout.cshtml:

<link rel="stylesheet" href="/fancybox/source/jquery.fancybox.css?v=2.1.4" type="text/css" media="screen" />
<script src="~/Scripts/jquery-2.0.0.min.js"></script>
<!-- May want to replace the above before deploying with use of a CDN:
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
OR: <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
..and similar for jquery-ui -->
<script src="~/Scripts/jquery-ui-1.9.2.min.js"></script>
<script type="text/javascript" src="/fancybox/source/jquery.fancybox.pack.js?v=2.1.4"></script>

из Default.cshtml:

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Garrapata";
}

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a class="fancybox" rel="group" href="Images/Fullsize/Landscapes/Spring_2013 04 06_2293.jpg"><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2293_th.jpg" width="294" height="196" alt="" /></a>
        <a class="fancybox" rel="group" href="Images/Fullsize/Landscapes/Spring_2013 04 06_2295.jpg"><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2295_th.jpg" width="294" height="196" alt="" /></a>
    </div>

    <div id="tabs-2">
    </div>

    <div id="tabs-3">
    </div>

    <div id="tabs-4">
    </div>

</div>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#tabs").tabs();
            $(".fancybox").fancybox({
                openEffect  : 'elastic',
                closeEffect : 'elastic'
            });
        });
    </script>

Кроме того, я не вижу кнопку "Закрыть" в углу сетевого элемента - возможно, потому что большое изображение, занимающее все "верхнее" пространство, не оставило места для его видимости.

ОБНОВЛЕНИЕ 3

Теперь я вижу, что файлы.css и.js, на которые я ссылался в _SiteLayout.cshtml, должны находиться в /fancybox/source

Кажется, вместо того, что у меня сейчас, а именно:

<link rel="stylesheet" href="/fancybox/source/jquery.fancybox.css?v=2.1.4" type="text/css" media="screen" />
<script type="text/javascript" src="/fancybox/source/jquery.fancybox.pack.js?v=2.1.4"></script>

... что должно работать:

<link rel="stylesheet" href="~/Content/jquery.fancybox.css" type="text/css" media="screen" />
<script type="text/javascript" src="~/Scripts/jquery.fancybox.js"></script>

... как я скопировал эти файлы в эти места.

Неужели это должно быть именно так (и, как мне кажется, довольно странно), как вы упомянули?

Судя по тому, что я понял, что css и js вообще не найдены, я удивлен, что это работает так же хорошо, как и...

2 ответа

Решение

Лайтбокс, который вы пытаетесь реализовать, работает только с jQuery jquery-1.7.2 или ниже, а также вам не нужен jquery-ui-1.9.2.min.js чтобы лайтбокс работал.

Чтобы эта версия лайтбокса работала, вам нужно lightbox.css, jquery-1.7.2.js а также lightbox.js,

Ниже приведен пример кода, аналогичного вашему, где работает лайтбокс. (Вставьте этот код в текстовый редактор, сохраните его как страницу HTML и откройте его с помощью веб-браузера)

<html>
<head>
    <!-- 
         **** Things you need to do****
         1. SPECIFY LIGHTBOX CSS FILE
         2. SPECIFY JQUERY JS (jquery-1.7.2) FILE
         3. SPECIFY LIGHTBOX JS FILE 
    -->

    <link rel="stylesheet" href="http://lokeshdhakar.com/projects/lightbox2/css/lightbox.css" type="text/css" media="screen" /> 
    <script src="http://lokeshdhakar.com/projects/lightbox2/js/jquery-1.7.2.min.js"></script> 
    <script src="http://lokeshdhakar.com/projects/lightbox2/js/lightbox.js"></script> 
</head>
<body>
<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a href="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" rel="lightbox" >
            <img src="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" width="300" height="200">
        </a>
    </div>
</div>
</body>
</html>

Вы можете использовать fancybox вместо лайтбокса, который работает с последними версиями jQuery. Последняя версия Fancybox - Fancybox 2, вы можете скачать ее с этого сайта - http://fancyapps.com/fancybox/

Код для реализации Fancybox 2

<html>
<head>
    <!-- Add jquery library -->
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <!-- Add fancyBox main JS and CSS files -->
    <script type="text/javascript" src="http://fancyapps.com/fancybox/source/jquery.fancybox.pack.js"></script>
    <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css" media="screen" />

    <script>
        $(document).ready(function(){
            $(".fancybox").fancybox({
                openEffect  : 'elastic',
                closeEffect : 'elastic'
            });
        });
    </script>
</head>
<body>
<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a class="fancybox" href="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" rel="lightbox" > <!--Add class "fancybox"-->
            <img src="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" width="300" height="200">
        </a>
    </div>
</div>
</body>
</html>

ОБНОВЛЕНИЕ № 1

Для реализации fancybox вам нужны все файлы в исходной папке (папка helpers не обязательна). Вам нужно хранить fancybox css, js и images в одном месте. Что вы можете сделать, это скопировать source папку в каталог веб-приложения и переименуйте его в fancybox, Затем вы можете вызвать файл CSS, файлы JS со своей HTML-страницы. например:

<link rel="stylesheet" href="../fancybox/jquery.fancybox.css" type="text/css" media="screen" />
<script type="text/javascript" src="../fancybox/jquery.fancybox.pack.js"></script>

Иногда это также не работает, если перед лайтбоксом включены другие библиотеки.js. Поместите это только после jquery.

Другие вопросы по тегам