Fancybox: наслагването се отваря вътре в div по желание, но не и в съдържанието

В момента имам Fancybox наслагване, което се отваря в моя #main div по желание, вместо поведението по подразбиране на отваряне в body елемент.

Направих това, както беше предложено в няколко теми на stackoverflow, като промених скрипта jquery.fancybox.js в този ред:

this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( parent && parent.length ? parent : 'body' );

до това:

this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( parent && parent.length ? parent : '#main' );

Това работи за позициониране на наслагването.

Искам след това Fancybox да центрира цялото изскачащо съдържание в това наслагване. Обаче първото съдържание на Fancybox, което се отваря, не е центрирано в наслагването, а по-скоро в рамките на body - това неочаквано поведение понякога поставя съдържанието на fancybox частично извън наслагването. Следващите елементи на fancybox се центрират в наслагването - само първият зареден елемент е центриран върху body.

Очевидно Fancybox си прави доста проблеми, за да изчисли размерите на прозореца за изглед и да направи възможно центрирането на съдържанието си в елемента body, но в този случай искам всички елементи да са центрирани в целевия ми #main div, в .fancybox-overlay.

Редактиране - промени "parent.lenth", печатна грешка в оригиналния файл jquery.fancybox.js, на "parent.length" - както е посочено от djehrame по-долу. За съжаление поведението продължава.


person nimmolo    schedule 03.03.2014    source източник
comment
Сигурен ли си, че не е просто печатна грешка? parent.lenth трябва да бъде parent.length   -  person Jeremy Ninnes    schedule 03.03.2014
comment
Благодаря - за съжаление коригирането на тази печатна грешка не променя поведението. Но си прав и тази печатна грешка е дори в оригиналния файл jquery.fancybox.js, който току-що изтеглих.   -  person nimmolo    schedule 03.03.2014
comment
За да бъдем по-ясни, наслагването се позиционира правилно. Съдържанието вътре е неправилно позиционирано. Не съм сигурен, но вярвам, че Fancybox изчислява позицията на съдържанието от позицията на наслагването, тъй като позиционирането на съдържанието работи според очакванията върху следващите елементи.   -  person nimmolo    schedule 03.03.2014
comment
връзка Кликнете върху опциите в този пример, за да видите fancybox   -  person nimmolo    schedule 03.03.2014
comment
пробвал ли си опцията parent API? Вижте това stackoverflow.com/a/19689842/1055987, специално № 2   -  person JFK    schedule 03.03.2014
comment
Благодаря JFK - опцията parent обаче изглежда не управлява параметъра, който се опитвам да задам. Предполагам, че може да се каже, че се опитвам да променя обхвата - DOM елемента - в рамките на който работи Fancybox (включително наслагването), от body на #main   -  person nimmolo    schedule 04.03.2014
comment
(продължение на коментара по-горе) … докато опцията parent изглежда добавя нов DOM елемент. Правилно ли го разбирам?   -  person nimmolo    schedule 04.03.2014
comment
Имаше ценен коментар тук по-рано, който за съжаление беше изтрит - посочвайки, че при първото зареждане .fancybox-wrap е брат на .fancybox-overlay, докато след зареждане на втория елемент от галерията .fancybox-wrap е дете от fancybox-overlay както трябва да бъде.   -  person nimmolo    schedule 04.03.2014