0

我正在尝试对一个不使用 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 之前完成的。有什么办法可以解决吗?

编辑:

回应贝尔吉:

$('#ajax').load("home.html", function (e) {
        hijax();
      });

传入event回调会导致原始代码按预期工作。不过,乔的解决方案看起来更优雅,所以我坚持这样做。多谢你们。

4

1 回答 1

5

代替:

$("a").click(function (e) {

和:

$(document).on('click', 'a', function (e) {

并删除function hijax() {最后一个}.

然后删除hijax();ajax 回调中的两个引用。

这使用.on()并意味着在所有当前和未来a元素上触发事件。您的原始代码没有将click事件绑定到新添加的链接。

于 2013-06-24T21:40:41.067 回答