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

This this in ajax callback isn't what you expect it to be. Add this to your ajax parameters:

context: this,

No need to build custom object saving system and making code more messy, as jQuery already has this functionality.

Edit: In this case it should look like:

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

...
于 2013-09-01T10:42:12.173 に答える