Поведение лайтбокса при добавлении или клонировании контента

Я действительно хотел бы помочь, пожалуйста!

Я работаю в бэкэнде 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"}); 
}
Другие вопросы по тегам