jQuery动态图像加载

时间:2013-08-29 18:44:28

标签: jquery image input loading fadein

**我在输入中输入引用时尝试加载图像。

<!DOCTYPE html>
<html>

    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>
            $(document).ready(function () {
                $('#id').focus();
                $('#id').keyup(function () {
                    $('#img').html('<img src="http://www.site.com/' + $(this).val() + '.jpg"
    width="200px">');
                    $('#img').hide().fadeIn('slow');
                });
            });
        </script>
    </head>

    <body>
        <input type="text" size="7" maxlength="7" id="id">
        <div id="img"></div>
    </body>

</html>

fadeIn()不起作用,除非图像已经在缓存中。我怎样才能每次都有淡入淡出?提前完成。

修改

另一个脚本,它有效!

<!DOCTYPE html>
<html>

    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script>
            $(document).ready(function () {
                $('#id').focus();
                $('#id').keyup(function () {
                    $('#img').attr('src', 'http://www.site.com/' + $(this).val() + '.jpg');
                    $('#img').hide();
                });
                $('#img').load(function () {
                    $('#img').fadeIn('slow');
                });
            });
        </script>
    </head>

    <body>
        <input type="text" size="7" maxlength="7" id="id">
        <br>
        <img id="img" width="200px">
    </body>

</html>

1 个答案:

答案 0 :(得分:2)

您应该继续并缓存图像(将其预加载到变量中),以便您可以快速访问它。您还可能希望使用jQuery的load()函数来告诉您何时加载了图像。这是一个简单的例子:

var theCachedImage = new Image();
/* Boolean that tells us whether or not the image has finished loading. */
var theBoolean;
$(theCachedImage).load(function () {
    In this callback, the image has finished loading.Set "theBoolean"
    to true.
    theBoolean = true;
});
theCachedImage.src = "your/image/source";
像凯文提到的那样,fadeIn正在发挥作用。没有什么可以淡出的。

修改

keyUp函数中,只需检查条件布尔值,并相应地执行操作。例如:

$('#id').keyup(function () {
    if (theBoolean) {
        $('#img').html('<img src="http://www.site.com/' + $(this).val() + '.jpg"
width="200px">');
        $('#img').hide().fadeIn('slow');
    } else {
        /* Your image hasn't been loaded yet. Do something to let the user know
         * or figure out the appropriate action to take. */
    }
});