为什么需要先显示图片才能让jquery图像放大镜工作



我正在开发一个托管音乐、图片和视频的网站。我目前有 4 页,一个标题页,一个音乐页,一个视频页和一个图像页。这很好用,但我希望能够同时播放音乐和看图片。为此,我创建了一个 HTML 文档,每个以前的页面都位于一个带有描述性类名的div 中。然后,我编写了一个 javascript 函数,该函数在调用时显示和隐藏每个div,因此页面的行为就像是 4 页,但事实并非如此。因此,我将音乐播放器嵌入到页脚div 中,该页脚在音乐播放时保持打开状态,这意味着您可以在每种媒体类型之间来回切换,同时保持音乐页脚打开并播放。这就是问题所在。完成此操作后,我在图像页面上使用的图像放大镜jquery函数不再正常工作,除非页面打开时图像div显示在开头。只有这样,您才能在媒体类型之间切换并仍然放大图片。如果标题div首先显示(就像它应该的那样(,并且您尝试放大图像,则它不起作用。

起初我认为也许一些外部 JavaScript 库彼此之间有负面的交互,但后来我碰巧看到了我上面解释的内容,现在我不明白为什么图像需要首先显示才能让放大镜正常工作。

我使用的jquery代码称为jQuery Image Magnify,它是由Dynamic Drive制作的。

编辑:我隐藏和显示div的方式是style="display:

none"隐藏和style="display:block"显示。

有趣的问题。可能是因为该元素需要实际可见才能运行 jQuery 图像放大函数。我敢打赌插件使用imageElement.onload图像放大处理程序或类似的东西,我认为如果隐藏图像元素,这是行不通的。

就解决方案而言,尝试将图像设置为在页面首次加载时可见,也许将左侧设置为 -9999 像素或类似的东西,因此它在技术上仍然"可见"但用户看不到它。然后,在图像加载并(希望(被放大或插件所做的任何事情之后,将其移动到其页面应该打开的div 的子级并删除负左值。

最新更新