JQuery hata "u tanımsız"

4 Cevap php

Neden "u tanımsız" kundakçı bir hata alıyorum?

Benim sayfa "break" kullanarak bölünmüş PHP kodu özel ayrı bir bölüm olarak fotoğraf ve fotoğraf galerisi bir görüntü oluşur.

Fotoğraflar ve fotoğraf galerileri "Fancybox.js" kullanılarak görüntülenir.

Ben bir fotoğraf açmaya çalıştığınızda ilk kez, her şey çalışıyor ama sayfa Firebug ekran hatası yeniledikten sonra tekrar bunu zaman "u tanımsız".

Ben ekran için sayfanın bu ayrı bir parçası istimal menüsü için jQuery:

$(document).ready(function(){

$(".menu_rfr").bind('click', function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
location.replace($(this).attr('rel'));

});

$(".menu_clickable").bind('click', function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'), function(event) {

});        
$(".menu_clickable").unbind("click");

});

});

Basitleştirilmiş PHP kodu gibi görünüyor:

<?
if (!isset($a)) $a = '';
switch($a)
{
case 1:
default:
?>
<div class="menu_clickable prof_link" id="prof_info" rel="?a=2">Photos</div>
<div class="menu_clickable prof_link" id="prof_info" rel="?a=3">Gallery</div> 
<div id="main"></div>    
<?
break;//photos
case 2:
?>
<script type="text/javascript"> 

$("a.group").fancybox({
'titlePosition'     : 'over',
'overlayShow':false
 });
 </script>
 <?
 <a href="1.jpg" id="group" class="group"><img src="tmb/1.jpg" border="0"></a>
 <?
 break;
 case 3: // photo gallery 
 ?>
<script type="text/javascript"> 

$("a.groupg").fancybox({
'titlePosition'     : 'over',
'overlayShow':false
 });
 </script>
 <?
 <a href="2.jpg" id="groupg" class="groupg"><img src="tmb/2.jpg" border="0"></a>
 <?
 break;
 }
 ?>

Dediğim gibi bu bir basitleştirilmiş kodu, ve muhtemelen bazı hatalar içinde vardır. Ben sadece nerede ve nasıl Fancybox kullanıyorum göstermek istedim.

Bir sayfanın üst kısmındaki menü jquery kodu arasındaki çatışma ve bu Fancybox için ya da PHP sayfasının diğer kısmı açıldıktan sonra "u tanımsız" kundakçı bir hata alıyorum tutmak neden başka bir neden vardır ve orada girişimleri fotoğrafları yeniden açılması için?

4 Cevap

HTML kaynağını görüntüleyebilir ve FancyBox iki kez ilan yok emin olun. Ben sadece aynı hata kundakçı açılır vardı ve bu benim kaynağında bulunan budur:

<script language="javascript" type="text/javascript" src="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.pack.js"></script>

<link rel="stylesheet" href="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.css" type="text/css" media="screen" />  
<script language="javascript" type="text/javascript" src="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.pack.js"></script>

Emin değilim tam olarak neden oldu, ama senin içerir ve ne yazık ki yaptığım gibi PHP require_onces, bazı çok korkak Javascript referansları ile sarabilir iç içe eğer.

Muhtemelen fancybox.js komut soruna neden olan iki yer var. Tüm dosyaları kontrol edin ve gerekli değildir olanları kaldırın lütfen.

Ben de aynı hata var - Ben temizleme kodu tarafından sıfırlanıyor 'yükleme' divlere nedeniyle olduğunu düşünüyorum. Ben çok kötü bir düzeltme var:

Değiştir:

if ($("#fancybox-wrap").length) {
   return;

Için: (çoklu-init denetimini atlamak için)

if (false && $("#fancybox-wrap").length) {

Ve ekleyin:

$.apzFancyboxInit = fancybox_init;

'() {= function fancybox_init sonra'

Bu ne bize başlatma rutin birden çok kez aramak için izin olduğunu; ve küresel bir değişken bu rutin işlev işaretçisi kaydeder. Şimdi yapmamız gereken emin biz bir fancybox kapalı her zaman. ApzFancyboxInit fonksiyonu $ diyoruz olun. Bunu yapmanın en iyi yer onClosed function işleyicisi olduğunu; yani (benim durumumda), benim aramaları şöyle:

        $.fancybox(
        {
            'showCloseButton' : true,
            'type' : 'ajax',
            'onClosed' : function()
            {
                $.apzFancyboxInit();
            },

Eğer kullanıyorsanız bir şablon sağ </body> etiketi üzerinde html şablona Tho yazılı div oluşturulan fancybox olduğunu görebilirsiniz "sökük".

JavaScript devre dışı varsa html çıktı fancybox-wrap kimliği ile bir div varsa kontrol ve kaldırın.