劫持与JQuery的链接,未绑定的新链接

时间:2013-06-24 21:31:38

标签: javascript jquery html

我正在尝试对不使用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的解决方案看起来更优雅,所以我坚持这一点。谢谢你们。

1 个答案:

答案 0 :(得分:5)

替换:

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

使用:

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

并删除function hijax() {和最后}

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

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