我正在尝试对不使用ajax的50页网站进行现代化改造,因此每次编辑必须在50页上完成,因此很难维护。
现在我已经摆脱了所有50页重复的HTML,但效果不佳:
function hijax() {
$("a").click(function (e) {
e.preventDefault();
var url = this.href;
if (url.indexOf("index.html") != -1) {
$('#ajax').load("home.html", function () {
hijax();
});
}
else {
$('#ajax').load(url, function () {
hijax();
});
}
});
}
这适用于主页面,但是通过Ajax加载的链接未被劫持。似乎回调是在加载HTML之前完成的。 有什么方法可以解决这个问题吗?
编辑:
回应Bergi:
$('#ajax').load("home.html", function (e) {
hijax();
});
在回调中传递event
会导致原始代码按预期工作。 Joe的解决方案看起来更优雅,所以我坚持这一点。谢谢你们。
答案 0 :(得分:5)
替换:
$("a").click(function (e) {
使用:
$(document).on('click', 'a', function (e) {
并删除function hijax() {
和最后}
。
然后删除ajax回调中对hijax();
的两个引用。
这使用.on()
,表示在所有当前和未来的a
元素上触发事件。您的原始代码未将click
事件绑定到新添加的链接。