有没有办法让我检查一个元素是否已被加载'在if语句中?

时间:2015-06-10 21:03:16

标签: javascript php jquery ajax

我有一段javascript / jquery,它是一个事件监听器,等待加载一个元素:

$("#download-iframe").on("load", function() {

    alert("Download iframe loaded.  src attribute value: " + $(this).attr("src"));
});

现在,src属性中的脚本完成加载/运行后,将弹出此警报。

我想显示一个缓慢递增的进度条,但我希望它只在$("#download-iframe")元素尚未加载时才会进行。

如果元素是否已加载,有没有办法检入if语句?

function showProgress() {

    var oneMinute = 60000; // One minute in milliseconds
    var maxTime = 10 * oneMinute; // Maximum time in minutes, 10 minutes
    var progress = 5;
    var increment = 5;

    $("#show-progress").attr("aria-valuenow", increment);
    $("#show-progress").css("width", increment + '%');

    var scriptProgress = setInterval( function() {

        progress += increment;
        if (progress <= 100 && /* ALSO CHECK FOR ELEMENT NOT YET LOADED HERE */) {

            $("#show-progress").attr("aria-valuenow", progress);
            $("#show-progress").css("width", progress + '%');
        }
        else {

             $(".progress").addClass("hidden");
             clearInterval(scriptProgress);
        }

    }, oneMinute / 10);

}

我正在使用twitter bootstrap的进度条。正在运行的src脚本是一个POST ajax URL,它不是上传/下载所以我不能使用AJAX进度eventListener。我想让用户看到正在发生的事情,某种反馈。

如果在进度条逐步达到100%之前加载了iframe src,我希望它跳转到100%然后显示PHP脚本的结果。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:3)

为什么不在load()

中设置标记
var loaded = false;
$("#download-iframe").on("load", function() {
    loaded = true;
    alert("Download iframe loaded.  src attribute value: " + $(this).attr("src"));
});

然后在if声明中

if (progress <= 100 && loaded)