0

我正在使用简单的 jquery 来显示和隐藏加载器,但是因为没有回调,所以它一显示就隐藏。这是代码,将对其进行注释以解释流程:

$('#test img').click(function(e) { // image is clicked

    $('#loader').show(); // show loader
    e.preventDefault();
    $(this).css('opacity', 1);

    var url = $('input[name=url]').val();

    var filter = $(this).data('filter');
    $('input[name=filter]').val(filter);

    // get image as a result of a call to another page
    $('#result').attr('src', 'index.php?url=' + url + '&filter=' + filter);

    $('#loader').hide(); // hide loader

});

如您所见,图像是通过调用另一个 php 页面生成的,该页面在处理后输出图像,如下所示:

$output = 'http://myurl.com/filter/' . $filename;
header('Location: ' . $output, TRUE, 301);
die;

有没有办法可以进行回调,以便加载程序在单击图像时加载,然后在创建其他图像时隐藏。

4

2 回答 2

2

尝试使用$.ajax它的success回调

$.ajax({
    type: "GET",
    url: 'index.php?url=' + url + '&filter=' + filter,
    success: function (image) {
        $('#result').attr('src', image);
        $('#loader').hide();
    }
});
于 2013-05-18T11:25:51.413 回答
0

$('#result').load()尝试在事件中隐藏您的加载程序。

$('#test img').click(function(e) { // image is clicked

    $('#loader').show(); // show loader
    e.preventDefault();
    $(this).css('opacity', 1);

    var url = $('input[name=url]').val();

    var filter = $(this).data('filter');
    $('input[name=filter]').val(filter);

    // get image as a result of a call to another page
    $('#result').attr('src', 'index.php?url=' + url + '&filter=' + filter);
});

$('#result').load(function(e) {
    $('#loader').hide(); // hide loader
});

在jQuery 文档中查看更多信息。

于 2013-05-18T11:28:06.043 回答