2

単純なコードの実行であると思われるものを実現するために、非常に多くのさまざまな可能性を試しました。経由でサーバーから DOM オブジェクトをロードしています.load()。ロードされた項目の 1 つは、日付を含む入力テキスト ボックスです。入力ボックスをクリックしたときに jdpicker (プラグイン datepicker) をロードしたい。.live()andの動作により、or.delegate()をそれぞれ使用しても、ポップアップの日付ピッカーが正常に動作しません。ウィンドウがポップアップし、ウィンドウ内の 1 つのオブジェクトをクリックしてすぐに閉じます (ウィンドウを閉じずに月、年をナビゲートすることはできません)、またはウィンドウがポップアップし、その後のすべてのクリックでコードが再実行され、複数のインスタンスが生成されます。日付ピッカーの。.die().undelegate()

.live().delegate()、のさまざまな組み合わせを試しましたが.one()、うまくいきませんでした。メイン ウィンドウで日付ピッカーをテストしたところ、正常に動作することがわかりました。コードを投稿することはできますが、私が行った 10 の異なる試みのどれが最良の例になるかはわかりません。私の最新の試みを示すことができます。

誰かがこれに適した例を持っていますか? ありがとう!


アップデート

コードを次のように編集しました。

$("#edit-entry").load("/edit/", { id:id }, function(){
                $('.jdpicker').one('click', function(){
                    $(this).jdPicker();
                });
});

これは完全な答えになることにかかっています。日付ピッカーは複数のインスタンスを呼び出さなくなりましたが、これは良いことですが、そのコントロール (月、年の選択) をナビゲートすることはできません。次の月をクリックすると、ロードして閉じます。次にクリックすると、翌月に再び開きます。したがって、それは機能しますが、確かに望ましくありません。助言がありますか?

4

1 に答える 1

0

「ライブ」または「デリゲート」ではそれを行うことはできません。実際のところ、「.load()」が成功した後、プラグインの初期化を明示的に適用する必要があります。

編集— 行った変更はおそらく機能しません。英語のコードは次のとおりです。

「URL '/edit/' からコンテンツを取得し、ID 'edit-entry' の要素に配置します。そのコンテンツを受信したら、1 回限りのイベント ハンドラーをすべての要素の「クリック」関数にバインドします。クラス 'jdpicker'. そのイベント ハンドラーで、要素の 'jdPicker' 機能をセットアップします。"

代わりに、ユーザーが最初に要素をクリックする必要があるように設定するのではなく、jdPicker 設定を直接呼び出すだけです。

$("#edit-entry").load("/edit/", { id:id }, function(){
    $('.jdpicker').each(function(){
        $(this).jdPicker();
    });
});
于 2010-08-05T00:59:52.220 に答える