jquery返回未定义的错误

时间:2014-10-15 06:28:51

标签: javascript jquery

我的标题上有一个用于创建som弹出窗口的代码

$(document).ready(function() {
    //Lorsque vous cliquez sur un lien de la classe poplight et que le href commence par #
    $('a.poplight[href^=#]').click(function() {
        var popID = $(this).attr('rel'); //Trouver la pop-up correspondante
        var popURL = $(this).attr('href'); //Retrouver la largeur dans le href

        //Récupérer les variables depuis le lien
        var query= popURL.split('?');
        var dim= query[1].split('&');
        var popWidth = dim[0].split('=')[1]; //La première valeur du lien

        //Faire apparaitre la pop-up et ajouter le bouton de fermeture
        $('#' + popID).fadeIn().css({
            'width': Number(popWidth)
        })
            .prepend('<a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Fermer" alt="Fermer" /></a>');

        //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
        var popMargTop = ($('#' + popID).height() + 80) / 2;
        var popMargLeft = ($('#' + popID).width() + 80) / 2;

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

        //Effet fade-in du fond opaque
        $('body').append('<div id="fade"></div>'); //Ajout du fond opaque noir
        //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
        $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();

        return false;
    });

    //Fermeture de la pop-up et du fond
    $('a.close, #fade').live('click', function() { //Au clic sur le bouton ou sur le calque...
        $('#fade , .popup_block').fadeOut(function() {
            $('#fade, a.close').remove();  //...ils disparaissent ensemble
        });
        return false;
    });    
});  

我在文档的头部也使用了jquery

 <script src="//code.jquery.com/jquery-1.10.2.js"></script>

麻烦的是它给我一个错误

Uncaught TypeError: undefined is not a function

正好在我点击关闭弹出窗口的部分

所以我可以打开但不能关闭它。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

.live()在jQuery 1.7中已弃用,已在1.9中删除。您需要使用.on()代替

$(document).on('click', 'a.close, #fade', function() { //Au clic sur le bouton ou sur le calque...
    $('#fade , .popup_block').fadeOut(function() {
        $('#fade, a.close').remove();  //...ils disparaissent ensemble
    });
    return false;
}); 

答案 1 :(得分:0)

live已从jQuery 1.9中删除,您使用的是jQuery 1.10.2 =&gt;错误。

您可以使用 on()来处理或使用委托来使用事件委派。

使用绑定点击直接处理事件。

 $(document).on('click', 'a.close, #fade', function() { //Au clic sur le bouton ou sur le calque...

}); 

<强>委托

 $(document).delegate('a.close, #fade','click', function() { //Au clic sur le bouton ou sur le calque...

   }); 

点击

 $('a.close, #fade').click(function(){});

<强>结合

$('a.close, #fade').bind("click",function(){});

希望它能帮到你。