0

#

更新:質問の最後にある回答を参照してください

#

次の問題が発生しています。

特定のイベントでロードされるすべてのイベント/プラグインをロードする関数を作成しました。ページが最初にロードされると、コンテンツがロードされるコンテナが呼び出される ajax 呼び出しが行われると、これが「body」にロードされます。

(function($){
    $.fn.defaultFormValues = function(){
        return this.each(function(){
            var element = $(this);

            var defaultValue = element.attr("default");
            var currentValue = element.val();

            // This will make sure not to replace exisitng values
            if( !currentValue ) {
                element.val( defaultValue ).addClass('input-before-focus');
            }
            else if( currentValue == defaultValue ) {
                element.addClass('input-before-focus');
            }

            element.unbind('focus').bind('focus', function() {
                if( element.val() == defaultValue ) {
                    element.val('').removeClass('input-before-focus');
                }
            });

            element.unbind('blur').bind('blur', function() {
                var currentVal = element.val();

                if( currentVal == '' ) {
                    element.val(defaultValue).addClass('input-before-focus');
                }
            });
        }); // end function
    };
})( jQuery );

(function($){
    $.fn.loadEvents = function(){
        return this.each(function(){

            var containerObj = $(this);

            $("input[default], textarea[default]",containerObj).defaultFormValues();
        });
    };
})( jQuery );

次のように最初の呼び出しをロードします。

$("body").loadEvents();

ajax コンテナーがロードされると、次のようなイベントがロードされます。

container.loadEvents();

何らかの理由で、ajax 呼び出しに対してイベントが機能しません。

どんな助けでも大歓迎です。

アレクサンダー

        • 答え

わかりました問題を理解することができました。container.replaceWith(…) を利用するたびに、要素「コンテナ」への参照は削除され、その要素の新しいインスタンスに置き換えられているため、使用できなくなります。

誰かが同じ問題に遭遇した場合に備えて、これは私が単に見逃した論理項目です.

アレクサンダー

4

1 に答える 1

0

またはその他の挿入メソッドを使用して新しい要素を追加する場合はload()、それらの要素が挿入された後にメソッドを呼び出す必要があります。

非常に単純なケースは

$('#content').load('path/to/server',function(){
/* new content exists, can bind event handlers to it*/
  $(this).loadEvents()
});
于 2013-11-02T19:23:08.300 に答える