JQuery 如果图片的 URL 被动态更改,TouchTouch 插件不会显示照片

JQuery TouchTouch plugin doesn't display photos if their URLs were dynamically changed

我的一个网站上有一个 JQuery 基于 TouchTouch 的图库。当我为随页面加载的照片列表调用一次时,它工作得很好。最近,我需要为此页面添加新功能(该网站是在线商店,我说的是带有产品的页面)。我需要在不离开页面的情况下加载不同颜色的相同产品(不同的 URL 仍然用于此目的,但我需要尽快更改它,因为重复会影响 SEO)。

使用 AJAX,我正在加载有关产品的所有必要信息(包括照片 URL)并且一切正常,除了 JQTT 图库:如果我不调用 touchTouch() 在页面加载期间第一次使用的选择器上 - 根本没有任何作用(很明显,因为插件中没有提供照片信息自动更新)。但是,当我在同一个选择器上第二次调用 touchTouch() 时,会出现带有按钮(箭头)的叠加层,但从未加载照片 ,仅显示正在加载的 GIF永久。我已经在 Mozilla FireFox 和 Google Chrome 中检查过这个 - 相同的行为。顺便说一句,缩略图加载正常,但显示它们与插件没有直接关系,因为它们只是加载大照片的触发器。

第一件事可能有帮助,正如我所想,是一个测试:在 [=54 之后不立即调用 touchTouch() =]-在 DOM 中请求和插入新照片,但在长时间延迟(例如 10 秒)后调用它以确保问题不在插件的预加载功能(如果有)或类似的东西中。那没有帮助。

然后我进行了第二次测试:我首先删除了 touchTouch() 文档就绪调用(因此,插件不会处理文档加载),然后在更新照片后进行此调用。 在这种情况下,插件工作正常。

因此,鉴于上述情况,我正在寻找如何在照片列表更新后使 JQTT 插件工作的解决方案。选择器总是相同的(我的意思是 CSS class 名称用于每张照片并在 $(selector).touchTouch() 中调用) .


这是网站上的真实示例:http://raroom.com/chairs/chair_bertoia/bertoia-1 目前,通过两个 link 可以获得一个产品的两个版本(黑色座椅和白色座椅的设计师椅)(当前用黑色粗下划线标记)。第二个 link 以 "bertoia-2" 结尾(而不是 "bertoia-1")。

我编写了一个函数 loadProductPage(productId) 来加载第二个产品,而没有遵循 link(您可以在页面源代码底部查看代码)。如果您从控制台调用此函数 - 您将看到所描述的问题(数据库中第二个产品的 ID 为 6,第一个为 5,因此,如果您先打开 link - 调用 loadProductPage(6 )).

提前致谢。

太可惜了,还剩5天了,这么简单的题都没人帮我。我自己找到了解决方案。别无选择,而是逐行探索 JQuery Touch Touch JS 代码,我注意到它在 class "placeholder" 中创建了新的 div =22=] with id "galleryOverlay",不管他们之前是不是创建者。我的意思是,它将新的占位符 - divs 附加到现有的占位符(在 touchTouch() 方法的先前调用中),因此它破坏了脚本逻辑并且无法加载新的照片不再,因为使用了错误的占位符-divs.

解决方案是在更新照片和缩略图 URL 之前以及再次调用 touchTouch() 方法之前删除之前的占位符-div。使用 JQuery 是一行简单的代码:

$('#gallerySlider .placeholder').remove();