【发布时间】:2011-06-02 04:46:26
【问题描述】:
我在 Safari 中遇到了一个奇怪的问题
我现在正在开发一个使用 Ajax 加载其内容的网站
我正在获取 url,然后加载页面的内容
jQuery(window).bind('hashchange', function () {
url = window.location.hash.substring(1);
if (!url) {
return;
}
var tsTimeStamp= new Date().getTime();
jQuery.get(url, { action: "get", time: tsTimeStamp,"ajaxed": "true"} , function (data, status, xmlHttp) {
var container = jQuery("#hidden");
container.html(xmlHttp.responseText);
var content = jQuery(".inner", container).html();}
然后在加载内容后,我将应用一些 jquery 的东西,例如
var ids = " ";
var ids_2 = " ";
for (var i = 0; i <= jQuery(".cats").length; i++) {
ids += "#c" + i + ",";
ids_2 += "#l" + i + ",";
}
ids = ids.substr(0, (ids.length) - 1);
ids_2 = ids_2.substr(0, (ids_2.length) - 1);
jQuery(ids).hover(function () {
href = jQuery(this).attr("href");
id = jQuery('a[href="' + href + '"]').attr("id");
jQuery("img").not(jQuery("img."+id)).addClass("op");
}, function () {
time = setTimeout(remove, 200);
});
jQuery(ids_2).hover(function () {
clearTimeout(time);
jQuery("img.op").removeClass("op");
href = jQuery(this).attr("href");
id = jQuery('a[href="' + href + '"]').attr("id");
jQuery("img").not(jQuery("img." + id)).addClass("op");
}, function () {
jQuery("img.op").delay(200).removeClass("op");
});
function remove() {
jQuery("img.op").removeClass("op");
}
上面的代码是在图像的地图区域上应用悬停效果
(此代码适用于4页)。
以上所有代码在除 Safari 之外的所有浏览器上都可以正常工作
问题是当包含已加载代码的地图的第一页工作正常时,但当您加载另一个包含相同区域的页面时,它将停止工作,直到整个页面被刷新。
似乎它第一次缓存处理程序,然后不将其应用于新的选择器
请记住,当 Alert ids & ids_2 提供正确的值时,但在 .hover 中使用 alert 时,它不会在第二次触发。
我知道这很复杂,但我真的被这个问题困住了。
【问题讨论】:
标签: javascript jquery html css safari