0

私はしばらくの間このスクリプトを使用しています(元々は田中宗によって書かれましたが、ソースWebサイトはなくなりました)-暗いページの上にウィンドウがポップアップし、閉じるボタンでページを閉じて暗くします。jqueryを最新の1.9.1に更新して新しいものを実装するまでは、正常に機能していました。これでウィンドウがポップアップしますが、閉じるボタンをクリックしてもウィンドウは削除されません。背景のページを上にシャントするだけで、背景に別の暗さのレイヤーが追加されているようです。

エラーコンソールメッセージ:TypeError:'undefined'は、スクリプトの最後の部分を参照する関数('$(' a.close、#fade')。live'を評価しています)ではありません://ポップアップを閉じます... "

誰かが私が問題を解決するのを手伝ってくれますか?これともっとカットアンドペーストの人にはかなり初心者です!ありがとう:)

<script  type="text/javascript">
    $("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 string value

        //Fade in the Popup and add close button
        $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend('<a href="#" class="close"></a>');

        //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('<div id="fade"></div>'); //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;
    });


        });
        </script>
4

2 に答える 2

1

移行プラグインを追加して、この問題を解決できます。

jQuery 1.9では、廃止された多くのメソッドが削除されました。jQuery.liveは削除されたメソッドの 1 つです。jQuery.onを の代わりに使用できますlive

ただし、これらの廃止された機能を使用する他の依存ライブラリがある場合は、下位互換性のために jQuery移行プラグインを使用できます。削除されたほとんどすべての機能が jQuery に追加されます。

あなたのコードでは、live()イベント登録は以下のように変更できます

$(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;
});
于 2013-03-05T07:09:58.283 に答える
0

.live1.9から削除されました。この構文は次のように置き換えることができます。

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

と:

$(document).on('event', 'selector', function(e) {
于 2013-03-05T07:08:54.830 に答える