2010-11-03 7 views
7

Dans Firefox, je suis tout à coup ce message de Firebug:

$('a.close, #fade').live is not a function 

En effet, lorsque je clique sur la galerie d'images et affiche pop-up. Je ne peux pas m'en sortir. L'événement click ne s'enregistre jamais en raison de ce message d'erreur.

C'est le script:

 $('a.poplight[href^=#]').click(function() { 
     var popID = $(this).attr('rel'); 
     var popURL = $(this).attr('href'); 

     var query= popURL.split('?'); 
     var dim= query[1].split('&'); 
     var popWidth = dim[0].split('=')[1]; 

     //Fade in the Popup and add close button 

     var div_popup = document.createElement('div'); 
     div_popup.setAttribute('id',popID); 
     div_popup.setAttribute('class','popup_block'); 
     document.body.appendChild(div_popup); 

     $(div_popup).fadeIn().css({ 'width': Number(popWidth) }).prepend('<a href="#" class="close"><img src="close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a> <a href="thumbBg' + $(this).attr('rel').substring($(this).attr('rel').lastIndexOf('p') + 1,$(this).attr('rel').length) + '"></a><p>The Human Diet: By Rene Endara</p>'); 

     var popMargTop = ($('#' + popID).height() + 80)/2; 
     var popMargLeft = ($('#' + popID).width() + 80)/2; 

     $('#' + popID).css({ 
      'margin-top' : -popMargTop, 
      'margin-left' : -popMargLeft   
     }); 

     $('body').append('<div id="fade"></div>'); 
     $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); 
     return false; 
    }); 

    //Close Popups and Fade Layer 
    $('a.close, #fade').live('click', function() { 
     $('#fade , .popup_block').fadeOut(function() { 
      $('#fade, a.close').remove(); //fade them both out 
     }); 
     return false; 
    }); 

balisage:

<ul class="thumb"> 
    <li><a href="#?w=500" rel="popup1" class="poplight"><img src="images/thumb1.jpg" alt="" /></a></li> 
    <li><a href="#?w=500" rel="popup2" class="poplight"><img src="images/thumb2.jpg" alt="" /></a></li> 
    <li><a href="#?w=500" rel="popup3" class="poplight"><img src="images/thumb3.jpg" alt="" /></a></li> 
    <li><a href="#?w=500" rel="popup4" class="poplight"><img src="images/thumb4.jpg" alt="" /></a></li> 
    </ul> 

Merci pour la réponse.

+3

Quelle version de jQuery utilisez-vous? – Marko

+0

Bon appel @Marko. .live n'a pas été introduit avant jQuery 1.4 –

Répondre

9

.live() a été introduit dans jQuery 1.3, par conséquent, il ne fonctionnera pas avec les versions antérieures.

.live() a également depuis été obsolète dans jQuery 1.7 et suivantes.

Les alternatives sont .on() et .delegate()

Voir la question connexe jQuery 1.9 .live() is not a function sur la façon de migrer le code existant.

+1

Ceci n'est simplement pas vrai, '.live (eventType, handler)' a été ajouté en 1.3, voir [les docs] (http://api.jquery.com/live/). Peut-être qu'il utilise une version plus ancienne que ça ... –

+0

Eh bien, en quelque sorte j'utilisais quelque chose de 1.2. Donc ce n'était définitivement pas supporté. Normalement, je le pointe directement sur Internet, mais il est vraiment bon de savoir quand certaines méthodes jquery sont et ne sont pas supportées parce que ça me rendait fou. – JohnMerlino

+0

Les documents jQuery sont * exceptionnels * à quelques exceptions près. –

1

.bind pas USAR Tente lugar de .live

Essayez d'utiliser .bind au lieu de .live

0

Trouver cette funcion dans wp-includes \ js \ thickbox \ thickbox.js et changez la fonction:

function tb_init(domChunk){ 
    jQuery(domChunk).live('click', tb_click); 
} 

Remplacement de la méthode "live" pour "sur", comme ceci:

function tb_init(domChunk){ 
    jQuery(domChunk).on('click',tb_click); 
} 

Si vous utilisez Nivo-Slider, les jquery.nivo.slider.js auront besoin de changements similaires.

Questions connexes