0

私は次のものを持っています:

function callback_function(a,b,c) {
    var aa = a;
    var bb = b;
    $('#content').html("xxx");
}

$('#content').load(href, "", function (a, b, c) { callback_function(a, b, c) });

私がしたいのは、値「xxx」を.htmlのhtmlに入れることですdiv#content。誰かがこれを行う方法を説明できますか? callback_function のコードで機能すると思いますが、それが機能する場合、実際の.load()データも に入れ#contentますか?

.load()ですべてを実行している場合、 の左側に何かが必要ですかcallback_function()? これが理にかなっていることを願っています。生産準備ができていないことに注意してください。パラメータの名前を変更したり、エラーチェックを行ったりする必要があることに気づきました.d

.ajax ではなく .loadを使用したいことに注意してください。次のラッパーを使用しているためです。多くのコードであることを事前に申し訳ありません:

$.fn.loadWithEffect = function()
{
    // Add effect layer
    this.addEffectLayer({
        message: $.fn.loadWithEffect.defaults.message
    });

    // Rewrite callback function
    var target = this;
    var callback = false;
    var args = $.makeArray(arguments);
    var index = args.length;
    if (args[2] && typeof args[2] == 'function')
    {
        callback = args[2];
        index = 2;
    }
    else if (args[1] && typeof args[1] == 'function')
    {
        callback = args[1];
        index = 1;
    }

    // Custom callback
    args[index] = function(responseText, textStatus, XMLHttpRequest)
    {
        // Get the effect layer
        var refElement = getNodeRefElement(this);
        var layer = $(refElement).next('.loading-mask');
        var span = layer.children('span');

        // If success
        if (textStatus == 'success' || textStatus == 'notmodified')
        {
            // Initial callback
            if (callback)
            {
                callback.apply(this, arguments);
            }

            // Remove effect layer
            layer.stop(true);
            span.stop(true);
            var currentMarginTop = parseInt(span.css('margin-top'));
            var marginTop = parseInt(span.css('margin-top', '').css('margin-top'));
            span.css({'marginTop':currentMarginTop+'px'}).animate({'opacity':0, 'marginTop':(marginTop-40)+'px'}, {
                'complete': function()
                {
                    layer.fadeAndRemove();
                }
            });
        }
        else
        {
            span.addClass('error').html($.fn.loadWithEffect.defaults.errorMessage+'<br><a href="#">'+$.fn.loadWithEffect.defaults.retry+'</a> / <a href="#">'+$.fn.loadWithEffect.defaults.cancel+'</a>');
            span.children('a:first').click(function(event)
            {
                event.preventDefault();

                // Relaunch request
                $.fn.load.apply(target, args);

                // Reset
                span.removeClass('error').html($.fn.loadWithEffect.defaults.message).css('margin-left', '');
            });
            span.children('a:last').click(function(event)
            {
                event.preventDefault();

                // Remove effect layer
                layer.stop(true);
                span.stop(true);
                var currentMarginTop = parseInt(span.css('margin-top'));
                var marginTop = parseInt(span.css('margin-top', '').css('margin-top'));
                span.css({'marginTop':currentMarginTop+'px'}).animate({'opacity':0, 'marginTop':(marginTop-40)+'px'}, {
                    'complete': function()
                    {
                        layer.fadeAndRemove();
                    }
                });
            });

            // Centering
            span.css('margin-left', -Math.round(span.outerWidth()/2));
        }
    };

    // Redirect to jQuery load
    $.fn.load.apply(target, args);

    return this;
};
4

2 に答える 2

1

コードを変更して、選択を 2 回行わないようにします。

function callback_function(a,b,c) {
    var aa = a;
    var bb = b;
    $(this).html("xxx"); //<-- key!
}

$('#content').load(href, callback_function);

または.ajax代わりに使用.load

function callback_function(a,b,c) {
    var aa = a;
    var bb = b;
    $("#content").html("xxx"); 
}
$.ajax({
   url : href,
   success: callback_function
});
于 2012-09-11T20:00:18.240 に答える
1

load()使用する代わりにajax():

$.ajax({
   url : href,
   success:function(data){
      callback_function(a, b, c) });
    }
})
于 2012-09-11T19:57:10.330 に答える