Javascript jQuery延迟加载-显示问题:无
我想在我的一个网站中显示延迟加载,问题是我有几个图像必须一直隐藏,直到我需要它们,例如表单上使用的警告标志-验证过程-只有当字段填充错误时,图像才可见 是否有解决方案修改延迟加载,使其忽略包含display:none属性的所有图像 多谢各位 插件URL: 页面上使用的代码:Javascript jQuery延迟加载-显示问题:无,javascript,jquery,jquery-plugins,lazy-loading,Javascript,Jquery,Jquery Plugins,Lazy Loading,我想在我的一个网站中显示延迟加载,问题是我有几个图像必须一直隐藏,直到我需要它们,例如表单上使用的警告标志-验证过程-只有当字段填充错误时,图像才可见 是否有解决方案修改延迟加载,使其忽略包含display:none属性的所有图像 多谢各位 插件URL: 页面上使用的代码: <script src="js/jquery.lazyload.js />" type="text/javascript"></script> <script type="text/jav
<script src="js/jquery.lazyload.js />" type="text/javascript"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
if
$("img").lazyload({
placeholder : "img/grey.gif",
effect : "fadeIn"
});
});
</script>
以及插件代码jquery.lazyload.js
(function($) {
$.fn.lazyload = function(options) {
var settings = {
threshold : 0,
failurelimit : 0,
event : "scroll",
effect : "show",
container : window
};
if(options) {
$.extend(settings, options);
}
/* Fire one scroll event per scroll. Not one scroll event per image. */
var elements = this;
if ("scroll" == settings.event) {
$(settings.container).bind("scroll", function(event) {
var counter = 0;
elements.each(function() {
if ($.abovethetop(this, settings) ||
$.leftofbegin(this, settings)) {
/* Nothing. */
} else if (!$.belowthefold(this, settings) &&
!$.rightoffold(this, settings)) {
$(this).trigger("appear");
} else {
if (counter++ > settings.failurelimit) {
return false;
}
}
});
/* Remove image from array so it is not looped next time. */
var temp = $.grep(elements, function(element) {
return !element.loaded;
});
elements = $(temp);
});
}
this.each(function() {
var self = this;
/* Save original only if it is not defined in HTML. */
if (undefined == $(self).attr("original")) {
$(self).attr("original", $(self).attr("src"));
}
if ("scroll" != settings.event ||
undefined == $(self).attr("src") ||
settings.placeholder == $(self).attr("src") ||
($.abovethetop(self, settings) ||
$.leftofbegin(self, settings) ||
$.belowthefold(self, settings) ||
$.rightoffold(self, settings) )) {
if (settings.placeholder) {
$(self).attr("src", settings.placeholder);
} else {
$(self).removeAttr("src");
}
self.loaded = false;
} else {
self.loaded = true;
}
/* When appear is triggered load original image. */
$(self).one("appear", function() {
if (!this.loaded) {
$("<img />")
.bind("load", function() {
$(self)
.hide()
.attr("src", $(self).attr("original"))
[settings.effect](settings.effectspeed);
self.loaded = true;
})
.attr("src", $(self).attr("original"));
};
});
/* When wanted event is triggered load original image */
/* by triggering appear. */
if ("scroll" != settings.event) {
$(self).bind(settings.event, function(event) {
if (!self.loaded) {
$(self).trigger("appear");
}
});
}
});
/* Force initial check if images should appear. */
$(settings.container).trigger(settings.event);
return this;
};
/* Convenience methods in jQuery namespace. */
/* Use as $.belowthefold(element, {threshold : 100, container : window}) */
$.belowthefold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).height() + $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top + $(settings.container).height();
}
return fold <= $(element).offset().top - settings.threshold;
};
$.rightoffold = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).width() + $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left + $(settings.container).width();
}
return fold <= $(element).offset().left - settings.threshold;
};
$.abovethetop = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollTop();
} else {
var fold = $(settings.container).offset().top;
}
return fold >= $(element).offset().top + settings.threshold + $(element).height();
};
$.leftofbegin = function(element, settings) {
if (settings.container === undefined || settings.container === window) {
var fold = $(window).scrollLeft();
} else {
var fold = $(settings.container).offset().left;
}
return fold >= $(element).offset().left + settings.threshold + $(element).width();
};
/* Custom selectors for your convenience. */
/* Use as $("img:below-the-fold").something() */
$.extend($.expr[':'], {
"below-the-fold" : "$.belowthefold(a, {threshold : 0, container: window})",
"above-the-fold" : "!$.belowthefold(a, {threshold : 0, container: window})",
"right-of-fold" : "$.rightoffold(a, {threshold : 0, container: window})",
"left-of-fold" : "!$.rightoffold(a, {threshold : 0, container: window})"
});
})(jQuery);
延迟加载当前不可用。它不能像预期的那样与最新的浏览器一起工作
。。。从插件的url
如果你还想使用这个插件,我想你可以打电话给
$("img:visible").lazyload({
placeholder : "img/grey.gif",
effect : "fadeIn"
});
希望对你有所帮助
延迟加载当前不可用。它不能像预期的那样与最新的浏览器一起工作
。。。从插件的url
如果你还想使用这个插件,我想你可以打电话给
$("img:visible").lazyload({
placeholder : "img/grey.gif",
effect : "fadeIn"
});
希望能帮上忙……很有效,非常感谢-太棒了。。我不知道你为什么说这是不相容的。我用GC、FF、IE、Safari进行了测试,一切都很好。我刚刚引用了你的url中的一些内容。。。我还没有检查下面的评论,这个插件似乎又能工作了…在Win7/x64上的最新测试版Chrome中似乎不能工作。它会淡入,但它们都在前面加载。这是自动删除图像src的一部分,不再工作。2009年12月23日发布的1.5版提供了另一种选择,您必须更改HTML并将图像url存储在原始属性中。我最近把它改名为data Original,以便于HTML5使用。我还更新了它,更好地解释了如何使用它。它很有效,非常感谢-太棒了。。我不知道你为什么说这是不相容的。我用GC、FF、IE、Safari进行了测试,一切都很好。我刚刚引用了你的url中的一些内容。。。我还没有检查下面的评论,这个插件似乎又能工作了…在Win7/x64上的最新测试版Chrome中似乎不能工作。它会淡入,但它们都在前面加载。这是自动删除图像src的一部分,不再工作。2009年12月23日发布的1.5版提供了另一种选择,您必须更改HTML并将图像url存储在原始属性中。我最近把它改名为data Original,以便于HTML5使用。我还更新了它,更好地解释了如何使用它。