gpt4 book ai didi

jquery - 不错的 hijax 偶尔会失败

转载 作者:行者123 更新时间:2023-12-01 05:02:05 26 4
gpt4 key购买 nike

我使用以下 jquery 进行 hijaxing。它非常简洁,因为它假设大多数链接“想要”劫持,但让那些不通过“nohijax”类“选择退出”的链接。 为什么偶尔会失败?

$("#content a:not(.nohijax), #footer a:not(.nohijax)").live("click", function () {
$.get($(this).attr("href"), function (response) {
$("#content").replaceWith($("#content", response));
});
return false;
});

在我的机器上,它在 Chrome 中 100% 运行,在 IE9 中 100% 运行,但在其他机器上的 IE 中很少失败。失败的情况并不一致。即使在“故障”机器上,劫持在大多数情况下都可以工作,但突然单击的链接将显得“什么也不做”,因为旧内容没有被新内容替换。 “在新选项卡中打开”始终有效,表明新内容确实已发送。

我尝试在这里研究这个问题。将 .not() 与 .live() 一起使用时必须小心,但我相信我有这一权利。此外,被替换的元素(此处为 id="content"的 div)不得是 body 元素的直接子元素。事实并非如此(中间还有另一个 div)。

如果没有明显的嚎叫声,我如何追踪发生了什么? (我是 javascript 和浏览器开发的新手)。谢谢。

最佳答案

使用console.log()很好;找出您要返回的数据。例如,console.log(response) 将在浏览器的开发工具控制台中显示数据。

例如。

$("#content a:not(.nohijax), #footer a:not(.nohijax)").live("click", function () {
$.get($(this).attr("href"), function (response) {

console.log(response);

$("#content").replaceWith($("#content", response));
});
return false;
});

至于.live功能无法使用,我认为IE 8及以下版本的该功能可能存在问题。您可能最好使用 .click(),除非要使用的 html anchor 是在页面加载后填充的。

如果您使用最新的 jquery 1.7,则 .live() 方法已被弃用,但如果您不使用 1.7,建议您使用 .delegate() 代替。 http://api.jquery.com/live/

关于jquery - 不错的 hijax 偶尔会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8985995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com