La fenêtre contextuelle a cessé de fonctionner après la mise à jour de jQuery

J’utilise ce script depuis un moment (à l’origine, écrit par Soh Tanaka, mais le site Web source a disparu). Il ouvre une fenêtre au-dessus d’une page sombre avec un bouton de fermeture qui le supprime et annule la page. Cela a bien fonctionné jusqu’à ce que je mette à jour jQuery à la dernière version 1.9.1 pour implémenter de nouveaux éléments. Maintenant, la fenêtre s’ouvre, mais cliquer sur le bouton de fermeture ne la supprime plus. Elle détourne simplement la page d’arrière-plan et semble append une autre couche de noirceur à l’arrière-plan.

Message d’erreur de la console: TypeError: ‘undefined’ n’est pas une fonction (évaluer ‘$ (‘ a.close, #fade ‘). Live’) qui fait référence au dernier morceau du script: // Close Popups … ”

Quelqu’un peut-il m’aider à résoudre le problème s’il vous plaît? Jolie personne à cela et plus une personne couper / coller! Merci 🙂

 $("document").ready(function() { $('a.poplight[href^=#]').click(function() { var popID = $(this).attr('rel'); //Get Popup Name var popURL = $(this).attr('href'); //Get Popup href to define size //Pull Query & Variables from href URL var query= popURL.split('?'); var dim= query[1].split('&'); var popWidth = dim[0].split('=')[1]; //Gets the first query ssortingng value //Fade in the Popup and add close button $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend(''); //Define margin for center alignment (vertical horizontal) - we add 80px to the height/width to accomodate for the padding and border width defined in the css var popMargTop = ($('#' + popID).height() + 80) / 2; var popMargLeft = ($('#' + popID).width() + 80) / 2; //Apply Margin to Popup $('#' + popID).css({ 'margin-top' : -popMargTop, 'margin-left' : -popMargLeft }); //Fade in Background $('body').append('
'); //Add the fade layer to bottom of the body tag. $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer - .css({'filter' : 'alpha(opacity=80)'}) is used to fix the IE Bug on fading transparencies return false; }); //Close Popups and Fade Layer $('a.close, #fade').live('click', function() { //When clicking on the close or fade layer... $('#fade , .popup_block').fadeOut(function() { $('#fade, a.close').remove(); //fade them both out }); return false; }); });

Vous pouvez append le plug-in de migration pour résoudre ce problème.

Dans jQuery 1.9, de nombreuses méthodes obsolètes ont été supprimées. jQuery.live est l’une des méthodes supprimées. Vous pouvez utiliser jQuery.on en remplacement de live .

Mais si vous avez d’autres bibliothèques dépendantes qui utilisent ces fonctionnalités obsolètes, vous pouvez utiliser le plug-in de migration jQuery pour assurer la compatibilité ascendante. Il ajoute presque toutes les fonctionnalités supprimées à jQuery.

Dans votre code, l’enregistrement de l’événement live() peut être modifié comme suit

 $(document).on('click', 'a.close, #fade', function() { //When clicking on the close or fade layer... $('#fade , .popup_block').fadeOut(function() { $('#fade, a.close').remove(); //fade them both out }); return false; }); 

.live a été retiré de 1.9. Vous pouvez remplacer cette syntaxe:

 $('selector').live('event', function(e) { 

Avec:

 $(document).on('event', 'selector', function(e) {