Поведение лайтбокса при добавлении или клонировании контента
Я действительно хотел бы помочь, пожалуйста!
Я работаю в бэкэнде Joomla. Как вы, наверное, знаете, Joomla использует Mootools по умолчанию, и это по умолчанию лайтбокс SqueezeBox. Я пытаюсь создать модуль, и внутри него я создаю пользовательское поле, в которое я добавляю добавленные или клонированные строки. Для этого я использовал плагин Jquery DynoTable.js.
Проблема в том, что внутри каждой строки есть ссылка, которая вызывает модальный лайтбокс iframe. Когда я добавляю новую строку, новые строки не могут открыть лайтбокс.
window.addEvent('domready', function() {
SqueezeBox.initialize({});
SqueezeBox.assign($$('a.modal'), {
parse: 'rel'
});
});
К сожалению, я не могу изменить этот скрипт в ядре Joomla и не хочу его трогать.
Я предполагаю, что это потому, что уже установленный триггер находится на domReady и применяется только к уже существующему Dom. Для этого я попытался добавить запасной "триггер" к сценарию DynoTable, который вызывает лайтбокс Squeezebox для повторного применения:
onRowAdd: function(){
SqueezeBox.assign($$("a.modal"), {parse: "rel"});
},
Это работает (откроет лайтбокс), однако уже установленные модальные ссылки (из загруженных строк) откроют 2,3,4 и т. Д. Iframes в этом модальном режиме в зависимости от того, сколько новых строк добавлено. Таким образом, в основном свежие строки откроют обычный лайтбокс, а старые - несколько фреймов в этом лайтбоксе.
Надеюсь, я хорошо объяснил.. Большое спасибо, ребята!
1 ответ
Попробуйте изменить селектор назначения на что-то вроде этого:
onRowAdd: function(){
// YOURDYNTABLE_ID has to be a valid selector to specify the dynoTable, can
// be an ID or class of the table, or an parent element containing the table
// with tr:last-child you only select the last row (the one you just added).
SqueezeBox.assign($$("YOURDYNTABLE_ID tr:last-child a.modal"), {parse: "rel"});
}