如何获得一个简单的jQuery代码来替换我当前的Javascript

时间:2011-07-01 02:44:47

标签: javascript jquery

目标:单击导航时的链接将显示旋转图像,直到脚本完全加载。

function ahah(url, target) {
  document.getElementById(target).innerHTML = '<img src="loading.gif" />';
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (req != undefined) {
    req.onreadystatechange = function() {ahahDone(url, target);};
    req.open("GET", url, true);
    req.send("");
  }
}  

function ahahDone(url, target) {
  if (req.readyState == 4) { // only if req is "loaded"
    if (req.status == 200) { // only if "OK"
      document.getElementById(target).innerHTML = req.responseText;
    } else {
      document.getElementById(target).innerHTML=" AHAH Error:\n"+ req.status + "\n" +req.statusText;
    }
  }
}

function load(name, div) {
    ahah(name,div);
    return false;
}

在链接

<a href="wrapper.html" onclick="load('file1.html','content');return false;">File 1</a>
<a href="wrapper.html" onclick="load('file2.html','content');return false;">File 2</a>

关于内容包装器

<div id="content"></div>

让我知道在jquery上执行此操作的简单方法。

2 个答案:

答案 0 :(得分:2)

假设每个<a href="wrapper.html">元素顺序对应file-n.html,您可以这样做:

$(function() {
    var content = $('#content');

    $('a[href="wrapper.html"]').each(function( i ) {
        var name = "file" + (i + 1) + '.html';

        $(this).click(function( e ) {
            e.preventDefault();
            content.html( '<img src="loading.gif" />' );
            $.ajax({
                url: name,
                dataType: 'html',
                success: function( data ) {
                    content.html( data );
                }, 
                error: function(xhr, status, error) {
                    content.html( "Error:\n" + status + "\n" + error;
                }
            });
        });
    });
});

当然,不要忘记首先包含jQuery库。

答案 1 :(得分:0)

我认为你只需要改写'ahah'。我就是这样做的。我也省略了你的'ahahDone'回调并将其合并到这个实现中。

function ahah(url, target) {
    $("#" + target).html('<img src="loading.gif" />');
    $.ajax({
        url: url,
        type: "GET",
        success: function (data, status, req) { $("#" + target).text(req.responseText); },
        error: function (req, status, err) { $("#" + target).text(" AHAH Error:\n" + req.status + "\n" + req.statusText); }
    });
}