我试着用监狱插件加载图片。它可以工作,但有时不能工作。
下面是我的代码:
<script type="text/javascript">
$(document).ready(function () {
//$('img.lazy').jail({
$("table[id*=dgImages] img").jail({
//callbackAfterEachImage: function () {},
//callback: (function () { alert("All the images are loaded"); })
});
});
</script>
<asp:DataList ID="dgImages" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" RepeatLayout="Table" CellPadding="1">
<ItemTemplate>
<div class="BusyStyles>
<asp:Image CssClass="lazy" runat="server" id="Image1" data-href='<%# Eval("photos") %>' BorderWidth="0" alt="" style="width:300px;height:300px;"/>
<noscript><img class="nolazy" src='<%# Eval("photos") %>' border='0' width="300px" height="300px"/></noscript>
</div>
</ItemTemplate>
</asp:DataList>当我使用类似的语法加载图像时,它可以工作:
$(document).ready(function () {
$('img.lazy').jail({
//callbackAfterEachImage: function () {},
//callback: (function () { alert("All the images are loaded"); })
});
});但是当我尝试像这样加载图像时,它不能工作,我不明白为什么:
$(document).ready(function () {
$("table[id*=dgImages] img").jail({
//callbackAfterEachImage: function () {},
//callback: (function () { alert("All the images are loaded"); })
});
});这个插件还有一个回调函数,在加载每个图像时都会调用该函数。我想知道加载映像的直接父项是谁。每个图像都包装在一个div中,所以div将成为父对象。展示一种方法,从callbackAfterEachImage回调中,获取加载图像的直接父级的引用。
因此,我可以和那个直接的父母一起工作。
发布于 2012-01-01 20:50:19
对我来说,选择器"table[id*=dgImages] img"看起来不错。
我已经构建了一个working example,并且我正确地获得了所有的图像。不过,我不知道控件<asp:DataList>生成的确切标记是什么,所以我编了一些东西。也许您生成的标记稍有不同,因此您的选择器无法工作。
可能有一件事是,div的<div class="BusyStyles>属性缺少一个双引号
对于回调callbackAfterEachImage,有两个参数被传递给函数:作为jquery对象的图像和插件的选项。要获取直接父对象( <div>),只需使用.parent()
$("table[id*=dgImages] img").jail({
...
callbackAfterEachImage: function ($img, options) {
var $parent = $img.parent();
alert('parent id: ' + $parent.attr('id'));
}
});https://stackoverflow.com/questions/8687808
复制相似问题