2

jquery facebox プラグインをライブ イベントで使用しようとしています (プラグインではなく、公式の実装)。

私のメインページは、ajax を介してページに読み込まれます。そのリモート ページには、ポップアップ ダイアログに表示したい他のリモート ページへのリンクもあります。これにはfaceboxプラグインを使用しています。

以下のコードは機能せず、リモート ページをポップアップではなく新しいページとしてビューポートにロードするだけです。

<script type="text/javascript">
            jQuery(document).ready(function($) {

                $('a[rel*=facebox]').live("click", function() {
                    $('a[rel*=facebox]').facebox()
                });
            });
          </script> 

これは、ライブ イベントを使用する正しい方法ですか?

残念ながら、私の開発マシンは IE6 のみで構成されている [:(] ため、firebug を使用してコードをデバッグすることはできません。

4

3 に答える 3

6

fabrik コメントで Kobi の回答を補完します。

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).unbind('click'); //everytime you click unbind the past event handled.
    $(this).facebox();
});

そのため、facebox がイベントを乗算するのを防ぐことができます。

コビへのクレジット。

于 2011-01-19T15:50:35.743 に答える
4

clickフェイスボックスを開始するにはイベントが遅すぎると思います。
これはうまくいくかもしれませんmousedown(私のテストでは問題ないように見えましたが、まったく同じではありませんでした)

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).facebox(); // this should do, you don't need all links
});

私もこれをお勧めします。AJAX 呼び出しが終了したら、facebox を有効にすることをお勧めします。

// sample code - you might use an other AJAX call
$('#dynamicDiv').load('...', {}, function(){
    $('#dynamicDiv a[rel*=facebox]').facebox();
});
于 2009-10-13T11:58:16.663 に答える
1

動的コンテンツを読み込んだ後、rel=facebox がまったく機能しないようだったので、どうもありがとうございました。

私はただ「活性化された」だけです

jQuery(document).ready(function($) { $('a[rel*=facebox]').facebox() })

ajax.response と出来上がりの後、リンクからのページの代わりにフェイスボックスがポップアップ表示されます。

kobiさん、ありがとうございます。

于 2009-11-11T15:04:10.690 に答える