E防止默认不起作用

时间:2013-08-29 19:18:44

标签: javascript jquery ajax graceful-degradation

这是我正在使用的代码:http://jsfiddle.net/qKyNL/12/

$('a').click(function(){
    event.preventDefault();
    var number = $(this).attr('href');
    alert(number);
    // AJAX
    $.ajax({
        url: "/ajax_json_echo/",
        type: "GET",
        dataType: "json",
        timeout: 5000,
        beforeSend: function () {
            // Fadeout the existing content
            $('#content').fadeTo(500, 0.5);
        },
        success: function (data, textStatus) {
            // TO DO: Load in new content
            // Scroll to top
            $('html, body').animate({
                scrollTop: '0px'
            }, 300);
            // TO DO: Change URL
            // TO DO: Set number as active class
        },
        error: function (x, t, m) {
            if (t === "timeout") {
                alert("Request timeout");
            } else {
                alert('Request error');
            }
        },
        complete: function () {
            // Fade in content
            $('#content').fadeTo(500, 1);
        }
    });    
});

我正在尝试使用Jquery创建可降级的分页,但问题是“e防止默认”似乎没有触发,而是仍然跟随链接。可以请任何人告诉我如何让这个链接降级,所以如果Jquery被禁用它仍然有效。

4 个答案:

答案 0 :(得分:2)

您没有传递事件对象。试试这个:

$('a').click(function(event){ // <-- notice 'event' passed to handler
event.preventDefault();

答案 1 :(得分:0)

应该是

$('a').click(function(event){

在第一行。请注意,event作为参数传递给匿名函数。

答案 2 :(得分:0)

没有event传递回调。

尝试

        $('a').click(function(event){
------------------------------^

            event.preventDefault();
    }

答案 3 :(得分:0)

正如其他答案所说,你需要将事件变量传递给回调

$('a').click(function(event) {
  event.preventDefault();
});

您还需要将所有代码包装到ready函数jQuery中,以便仅在jQuery准备好处理它们时才分配事件侦听器。

$(document).ready(function() {
    $('a').click(function(event) {
      event.preventDefault();

      // the rest of your code
    });
});