4

asp.netページにいくつかのファンシーボックス(より正確には)のファンシーボックスがあります。

私のFancybox(jqueryプラグイン)は、ページでポストバックが発生するまで正常に機能し、その後は機能しません。

何かご意見は?誰かが同様の行動を経験しましたか?

更新:いくつかのコード。

各繰り返しアイテムにファンシーボックスを備えたデータバインドされたリピーターがあります。

それらは(リピーターの外で)によってインスタンス化されます

$(document).ready(function() {
            $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });
        }); 

アンカータグが繰り返されます。

href = "#watchvideo _ <%#Eval(" VideoId ")%>"

のdivも

id="watchvideo_<%#Eval("VideoId") %>

フラッシュムービーをインスタンス化するスクリプト要素も同様です

はい、VideoIdsがページに出力されています。

更新:フラッシュの問題ではありません。

私はフラッシュなしでそれを試したので、それはフラッシュの問題ではありません、それはで簡単なメッセージでウィンドウをポップすることさえしません。

UPDATE:それがupdatepanelなのかしら。

Ajax更新後のjQueryでのイベントの再バインド(updatepanel)

-リー

4

5 に答える 5

14

問題は$(document).ready()、ファンシーボックスをバインドするために使用することです。このコードは、ページが最初にロードされたときに1回だけ実行されます。同期または非同期のすべてのポストバックでfancybox機能が必要な場合は、$(document).ready()をに置き換えpageLoad(sender, args)ます。すなわち

function pageLoad(sender, args) {
        $("a.watchvideo").fancybox({
        'overlayShow': false,
        'frameWidth' : 480,
        'frameHeight' : 400
        });
}

詳細については、この回答を参照してください

于 2009-09-25T14:00:38.640 に答える
1

ポストバック後に実行されないコードの一部にインスタンス化コードが挿入されている可能性がありますか?

于 2009-09-25T13:32:06.717 に答える
1

説明したように、それは更新パネルでした

ここで..Ajax更新後のjQueryでのイベントの再バインド(updatepanel)

提案したように、私は単に交換しました

$(document).ready(function() {
            $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });
        });

function pageLoad(sender, args)
{
   if(args.get_isPartialLoad())
   {
       $("a.watchvideo").fancybox({
            'overlayShow': false,
            'frameWidth' : 480,
            'frameHeight' : 400
            });

   }
}

そしてそれはうまくいきました!

-リー

于 2009-09-25T14:00:06.780 に答える
0

これは他の誰かを助けるかもしれませんが、FancyBoxはそのコードを<body>要素に追加します...これはすべて問題ありませんが、asp.net<form>要素の外側にあります。FancyBoxを変更してそのdomオブジェクトを<form>要素に追加すると、ポストバックの問題は解消されました。

$('body form:first').append( ... );
于 2010-04-27T05:18:40.977 に答える
0

ページングされたグリッドビューでも同様の問題が発生しました。グリッドの最初のページはファンシーボックスを起動していましたが、残りは起動しませんでした。

画面の一部だけを更新するUpdatePanelに関連する問題である可能性があると思いました。

私はこれを置き換える問題を解決しました:

 <script>
        $(document).ready(function () {

            $("a.small").fancybox();

        });
    </script>

これとともに:

  <script>
        function pageLoad(sender, args) {
            $("a.small").fancybox();
        };
    </script>
于 2013-07-23T14:16:42.670 に答える