2017-11-20 20 views
1

Ich habe eine Liste von Elementen wieFancybox nicht dynamisch hinzugefügt externer Links arbeiten

<ul> 
<li><a href="http://toExtUrl/img.jpg" class="should-popout"> 
    <img src="http://mywebsite.com/icon.png"></a> 
</li> 
</ul> 
folgt

toExtUrl/img.jpg dynamisch hinzugefügt wird, und es kann manchmal zeigt PDF- oder HTML-Inhalte statt Bilder (Dies ist immer externer Link). Ich versuche, den fancybox popout-Effekt für alles zu geben, was mit dem href-Attribut '.should-popout' kommt.

Aber beim Klicken passiert es nur Umleitung auf externe URL passiert. Meine fancybox Option ist wie folgt

$(window).load(function(){ 
$('a.should-popout').fancybox({ 
    'autoDimensions' : true, 
    'autoScale' : true 
    'hideOnContentClick': true, 
    'showCloseButton' : true 
}); 
}); 

Was kann der Fehler in der Einrichtung sein.

Antwort

1

I w Ould schlägt vor, Sie zu v3 aktualisieren und wie diese verwenden:

$().fancybox({ 
    selector : '.should-popout' 
}); 

v2 versucht Stromselektors (mit dieser praktischen https://api.jquery.com/selector/ Eigenschaft) und verwendet dann das schaffen delegieren Event-Handler zu bekommen. Aber jQuery v3 hat diese Funktion entfernt und funktioniert deshalb nicht mehr. Und daher ermöglicht v3 diese neue Syntax.

+0

Danke funktioniert .. +1. Ich benutzte fancybox Version 3 und folgendes Dokument für ältere Version. @milind Patel schlägt auch das gleiche vor. –

+0

Ja, er hat seine Antwort geschrieben, während ich (langsam) tippte :) – Janis

+0

Haben Sie einen Vorschlag zur Überwindung der Situation, wo das Popup "Der angeforderte Inhalt kann nicht geladen werden kann. Bitte versuchen Sie es erneut später ", Wenn die externe Verbindung auch ihre Bilder dynamisch behandelt? –

1

Sie müssen zuerst die Dokumentation lesen.

Read it here

Für v3

$().fancybox({ 
    selector : 'a.should-popout', 
    loop  : true 
}); 

für ältere Versionen

Read it here in api method

$(document).on('click','a.should-popout',function(event){ 
    $.fancybox.close(true); 
    $.fancybox.open($(this)); 
}); 
+0

Danke .. es hat funktioniert .. +1 Ich habe fancybox Version 3 und folgenden doc für ältere Version verwendet. –

+0

Immer willkommen. Sie können die Antwort als wahr markieren. :) –

Verwandte Themen