如何评估链中的代码或假装回调函数?
问题描述:
我我的动态页面上添加图片:如何评估链中的代码或假装回调函数?
<div class="simple_overlay" id="overlay">
<img src="" />
</div>
<script type="text/javascript">
$(function() {
$("a[rel]").overlay({
var source = this.getTrigger().attr('href');
this.getOverlay().find("img").attr({'src': source});
});
});
</script>
现在,我需要获得新的图像的宽度和计算margin-left
与之相对应。原生jQuery工具方法不起作用,因为当加载叠加时,图像尚未加载并且容器的宽度为0. 是否有任何选项可以模拟此链上的回调,因此我可以在attr()
评估之后使用width()
?
答
使用load
event(不要与window.load
混淆)的图像,像这样:
$("a[rel]").overlay({
var source = this.getTrigger().attr('href');
this.getOverlay().find("img").one('load', function() {
//run your code here, the image is loaded and is "this"
}).each(function() {
if (this.complete) $(this).load(); //trigger load, handles from cache cases
}).attr({'src': source});
});
这使用.one()
只运行一次你的代码。 load
事件触发时,,图像加载...但这并不总是火灾时从缓存(取决于浏览器)加载它,这是.each()
是什么。如果浏览器从缓存中加载并触发事件......也没什么太大的.one()
处理的是,代码仍然在任何情况下:)运行一次
如何搭售行为的形象,并且使其工作与它的$(this).parent()'加载? – 2010-06-30 08:39:23
@Evadne Wu:在这种情况下,图片会在边距变化时“跳跃”。这对用户不利。 – vtambourine 2010-06-30 08:58:26
动画变化?制作图像'display:none'或'visibility:hidden'直到脚本明确显示? – 2010-06-30 09:47:28