Intereting Posts
Вызов сценария выхода php с помощью jQuery Существуют ли случаи, когда деструктор в PHP НЕ вызывается? Нечетное поведение оператора switch Как написать несколько операторов select с несколькими условиями в одном запросе? Сообщение Ajax из динамически созданной таблицы как установить непрозрачность непрозрачности изображения во время загрузки? Уникальный массив PHP по значению? PHP Datetime «следующая неделя среда» дает мне понедельника Работа cron на веб-сервере Как отправить только событие click (div) при использовании функции jquery live? Как преобразовать регулярное выражение PHP в JavaScript regex Как разместить массив в MySQL PDO PHP игнорирует параметр ATTR_TIMEOUT для MySQL, когда сервер не может быть достигнут PDO – FETCH_CLASS – передать результаты в конструктор в качестве параметров Выбросить одиночные кавычки в строке, содержащей одиночные и двойные кавычки

Динамически загружать содержимое ajax на fancybox из базы данных MySQL

У меня есть этот код для отображения ссылок fancybox. Как это работает сейчас: я выбираю 4 записи из базы данных MySQL, которые соответствуют категории. И снова для всех категорий на моей странице. Я установил rel = 'x' для записей, соответствующих категории 'x'. Идея того, что я хочу сделать, – «углубиться в категорию». Это означает, что при завершении просмотра 4 элементов из группы rel = 'x' выберите из следующей базы данных базы данных mysql, чтобы отобразить, но не отобразить на странице, где находятся эти 4 ссылки. Записи упорядочиваются по id DESC.

<a class="various fancybox.ajax" data-fancybox-type="ajax" rel="group" href="view.php?&id=<?php echo $rw10['id']; ?>"></a> $(document).ready(function() { $(".various").fancybox({ maxWidth : 800, maxHeight : 800, fitToView : false, width : '70%', height : '100%', autoSize : false, closeClick : false, openEffect : 'none', closeEffect : 'none', 'closeBtn' : false, openEffect : 'none', closeEffect : 'none', nextEffect : 'none', prevEffect : 'none', preload: true, padding : 10, margin : [20, 60, 20, 60] // Increase left/right margin }); 

Что вы можете сделать, так это получить ближайшие (связанные) элементы из своей базы данных и сохранить их в переменной json, например:

 var databaseResponse = [{ href: "path/image05.jpg", // 4 are visible on page so type: "image", title: "Image #5", isDom: false }, { href: "path/image06.jpg", type: "image", title: "Image #6", isDom: false }, { href: "path/image07.jpg", type: "image", title: "Image #7", isDom: false }]; // etc 

Затем push элементы из этой переменной в галерею в beforeLoad например:

 var done = false; // initialize switch jQuery(document).ready(function ($) { $(".fancybox").fancybox({ // loop : false, // optional beforeLoad: function () { // here get next items from database // and store them in a json variable // eg "databaseResponse" if ((this.index == this.group.length - 1) && !done) { for (var i = 0; i < databaseResponse.length; i++) { this.group.push(databaseResponse[i]); }; done = true; // push items only once } }, afterClose: function () { done = false; // reset switch } }); }); // ready 

Обратите внимание, что мы используем переключатель ( done переменная), чтобы нажимать элементы только один раз (возможно, нам придется сбросить переключатель после закрытия fancybox)

JSFIDDLE

ПРИМЕЧАНИЕ : элементы будут добавлены (нажаты) только после того, как мы увидим последний элемент в DOM (четвертый в вашем случае), поэтому, если вы начнете просматривать галерею назад, вы не увидите новые элементы, но до второго цикла ,

Возможно, вы захотите установить loop на false хотя