1

結果の詳細を含む複数のブロックを表示するページがあります。各ブロック内には<a>、thickbox jQuery プラグインが添付されたタグがいくつかあります: class="thickbox"

アンパーサント タグの 1 種類の例を次に示します。

<a class="thickbox" title="Please Sign In" href="userloginredir.php?height=220&width=350&deal=3">

ページに表示される結果が多すぎるため、jQuery ページネーションをページに追加すると問題が発生します。内部に結果を含む div コンポーネントは、ajax load() イベントによって更新されます。

以下は、ページネーション スクリプトです。

$(document).ready(function(){
    //References
    var pages = $("#menu_deals li");
    var loading = $("#loading_deals");
    var content = $("#content_deals");

    //show loading bar
    function showLoading(){
        loading
            .css({visibility:"visible"})
            .css({opacity:"1"})
            .css({display:"block"})
        ;
    }
    //hide loading bar
    function hideLoading(){
        loading.fadeTo(1000, 0);
    };


    //Manage click events
    pages.live('click',function(){
        //show the loading bar
        showLoading();

        //Highlight current page number
        pages.css({'background-color' : ''});
        $(this).css({'background-color' : 'yellow'});

        //Load content
        var pageNum = this.id;
        var targetUrl = "ajax_search_results.php?page=" + pageNum + "&" + $("#dealsForm").serialize() + " #content_d";
        content.load(targetUrl, hideLoading);
    });

    //default - 1st page
    $("#1").css({'background-color' : 'yellow'});
    var targetUrl = "ajax_search_results.php?page=1&" + $("#dealsForm").serialize() + " #content_d";
    showLoading();
    content.load(targetUrl, hideLoading);
});

ページネーション(上記のコード)を追加すると、thickboxイベントが認識されなくなり、ログインフォームを含むウィンドウをポップアウトする代わりに、新しいページで結果が開きます(通常のリンクをクリックするように動作します)私のjQueryの知識からこれドキュメントの準備ができた後にコンテンツが更新されるため、DOM でコンポーネントが定義されていないことを意味します。

load イベントを次のようなものにバインドしようとしています。

content.bind('load', ???);

しかし、load イベントをバインドするときに、load パラメータ、targetUrl、およびコールバック関数 hideLoading を渡す方法がわかりません。

この問題で私を助けてください、それはすでに私に許されるよりも多くの時間を費やしました.

4

2 に答える 2

0
tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox

ajaxのコールバックでそれを呼び出します。

于 2009-11-13T14:59:52.253 に答える
0

hideLoading 関数をコールバックとして使用しましたが、代わりにこれに置き換えて、thickbox を初期化し、読み込みも非表示にします。

content.load(targetURL, function(){ tb_init('a.thickbox'); hideLoading(); });
于 2009-11-14T05:31:10.767 に答える