2012-03-24 19 views
0

Ich versuche, meine eigenen nächsten und vorherigen Pfeile in einem Fancybox 2 Popup zu erstellen. Es funktioniert gut, um sie einzuschließen, aber wenn ich sie anklicke, bekomme ich, dass $ .fancybox nicht definiert ist. Ich öffne eine Seite mit Ajax.Fancybox ist undefined

Das ist mein fancybox init Code:

$(".popup").fancybox ({ 

maxWidth : 1200, 
maxHeight : 550, 
width  : '90%', 
height  : '90%', 
autoSize : false, 
openEffect : 'none', 
closeEffect : 'none', 
nextEffect: 'none', 
prevEffect: 'none', 
arrows: false, 
padding: 0, 
scrolling: 'no', 
afterShow: function (e) { 

var toolbar = "<div id='next'>Next</div><div id='prev'>Prev</div>"; 

$(".fancybox-inner").append(toolbar); 

} 

}); 

Das ist meine nächste und vorherige Code:

$("#next").live ("click", function() { 

$.fancybox.next(); 

}); 

$("#prev").live ("click", function() { 

$.fancybox.prev(); 

}); 

Beide Codebeispiele ändert die Größe in eine JavaScript-Datei namens popup.js, die ich habe enthalten auf der Seite, wo ich das Popup-Fenster aufrufen.

Was ist los?

Antwort

2

würde ich eher

var toolbar = "<div id='next'><a href="javascript:$.fancybox.next();">Next</a></div><div id='prev'><a href="javascript:$.fancybox.prev();">Prev</a></div>"; 

und über Ihre .live() Skripte vergessen.

BTW, seit jQuery 1.7 ist die .live() Methode veraltet. Verwenden Sie stattdessen .on(). Bei älteren Versionen von jQuery wird die Verwendung von .delegate() gegenüber .live() bevorzugt.

+0

Ah danke! Ich frage mich nur, warum Delegierter besser ist als leben? –

+0

Lesen Sie selbst über '.live()' Nachteile hier http://api.jquery.com/live/ – JFK