0

将活动类更改为当前单击的分页类的代码。删除它有效,但添加新类不起作用。

http://jsfiddle.net/spadez/qKyNL/35/

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

谁能告诉我哪里出错了?

4

2 回答 2

2

问题是回调thissuccess不是您的元素。

你可以这样做:

$('a').click(function(event){
    var element = this; // <= save the clicked element in a variable
    event.preventDefault();
    var number = $(this).attr('href');
    $.ajax({
        ...
        success: function (data, textStatus) {
            ...
            $('#pagination li.active').removeClass("active");            
            $(element).parent().addClass("active"); // <= use it
        },
        ...
    });    
});
于 2013-09-01T10:35:47.437 回答
1

ajax 回调中的 this this 不是您所期望的。将此添加到您的 ajax 参数中:

context: this,

无需构建自定义对象保存系统并使代码更加混乱,因为 jQuery 已经具有此功能。

编辑:在这种情况下,它应该看起来像:

$('a').click(function(event){
    event.preventDefault();
    var number = $(this).attr('href');
    $.ajax({
        context: this,
        url: "/ajax_json_echo/",

...
于 2013-09-01T10:42:12.173 回答