我的一个网站上有一个基于JQuery TouchTouch的图库。当我为加载页面的照片列表调用一次时,它工作得很完美。最近,我需要为此页面添加新功能(该网站是在线商店,我正在谈论带有产品的页面)。我需要加载不同颜色的相同产品而不离开页面(不同的URL仍然用于此目的,但我需要更改此ASAP因为重复影响SEO)。
使用AJAX,我正在加载有关产品的所有必要信息(包括照片网址),一切正常,但JQTT图库除外:如果我不打电话给 touchTouch()在页面加载期间第一次使用的选择器 - 根本没有任何作用(很明显,因为插件中没有提供照片信息自动更新)。但是,当我在同一个选择器上第二次调用 touchTouch()时,会出现带按钮(箭头)的叠加层,但是从不加载照片,只会永久显示加载GIF 。我在Mozilla FireFox和Google Chrome中检查了这一点 - 行为相同。顺便说一句,缩略图照片加载得很好,但显示它们与插件没有直接关系,因为它们只是加载大型照片的触发器。
第一件事可能会有所帮助,正如我想的那样,是一个测试:在AJAX请求和DOM中插入新照片之后不会立即调用 touchTouch(),但是在长时间延迟(例如,10秒)后调用它以确保问题不在插件的预加载功能(如果有)或类似的问题中。那没有用。
然后我进行了第二次测试:我在文档就绪中删除了第一个 touchTouch()调用(因此,插件不会处理文档加载),然后在更新照片后进行此调用。 在这种情况下,插件工作正常。
因此,鉴于上述情况,我正在寻找解决方案如何在照片列表更新后使JQTT插件正常工作。选择器总是一样的(我的意思是用于每张照片的CSS类名,在 $(选择器).touchTouch()中调用。)
以下是网站上的一个真实示例:http://raroom.com/chairs/chair_bertoia/bertoia-1 目前,一个产品的两个版本(设计师的椅子有黑色座椅和白色座椅)可通过两个链接(电流标有厚黑色下划线)。第二个链接以" bertoia-2"结束。 (而不是" bertoia-1")。
我写了一个函数loadProductPage(productId)来加载第二个产品而没有跟随链接(你可以看到页面底部的代码)。如果你从控制台调用这个函数 - 你会看到描述的问题(DB中第二个产品的id是6,首先是5,所以,如果你打开第一个链接 - 调用 loadProductPage(6))
提前致谢。
答案 0 :(得分:1)
这太可怜了,还剩5天了,没有人帮我解决这么简单的问题。我自己找到了解决方案。没有别的选择,而是逐行探索JQuery Touch Touch JS代码,我注意到它创建了一个新的div,其中带有id为“galleryOverlay”的div中的“placeholder”类,无论它们是否早先是创建者。我的意思是,它将新的占位符div添加到现有的(前一次调用 touchTouch()方法),因此它会破坏脚本逻辑,因为使用错误的占位符而无法再加载新照片-divs。
解决方案是在更新照片和缩略图URL之前以及再次调用 touchTouch()方法之前删除以前的占位符div。使用JQuery,它只是一行代码:
$('#gallerySlider .placeholder').remove();