0

私は、ドキュメントがないActiveSocialと呼ばれるDotNetnukeモジュールの一部であるサードパーティのタブコントロールを使用しています。問題は、タブを変更すると、タブにロードされているコンテンツのスタイルを設定するjs(masonry.js)が失われることです。スクリプトを再バインドする必要がありますが、成功していません

これが私がこれまでに持っているものです。

以前のプロジェクトで使用した再バインド方法を使用しています

function BindControlEvents() {
        //jQuery is wrapped in BindEvents function so it can be re-bound after each callback.
        var $container = $('.addMasonry');
        $container.imagesLoaded(function () {
            $container.masonry({
                itemSelector: '.explore-image',
                columnWidth: 10,
                isFitWidth: true
            });

        });

    }
    //Initial bind
    $(document).ready(function () {
        BindControlEvents();
    });

//コールバックの再バインドvarprm= Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () {
        BindControlEvents();
    });

ただし、タブが変更されても、これは再バインドされません。だから私はページにボタンを作成しました

 <li><a onclick="BindControlEvents();" href="#">re-bind</a></li>

タブを変更した後でこのボタンをクリックすると、スクリプトが再バインドされます。

次のステップは、タブの読み込みが完了したことを通知するイベントを見つけることですが、これまでのところ失敗しています。

タブコンテナを選択し、.load()および.ajaxComplete()でBindControlEvents関数を実行しようとしましたが、それでも成功しません。

タブが完全にロードされたことを確認する他の方法はありますか。私は仕事に多くを与えていないかもしれないことを理解していますが、これは私が知っている限りです。

助けてくれてありがとう

マーク

4

1 に答える 1

0

インターセプトされていない部分的なポストバックがある可能性があります。jquery init の外で、js に次を追加してみてください。

    <script type="text/javascript">
    Sys.Application.add_load(BindControlEvents);

    function BindControlEvents() {
    [...]
    </script>

これが役に立てば幸いです。

于 2012-05-30T23:25:55.677 に答える