在ajax调用之后链接的addClass

时间:2014-02-14 14:01:12

标签: javascript jquery ajax drupal addclass

我有一些问题。 我正在使用drupal视图公开过滤器,它通过ajax调用对内容进行排序。 这意味着我点击“按名称排序”,下面的内容排序而不刷新页面。 我决定将特殊类添加到活动排序链接。

$(document).on('click', '.form-item-sort-bef-combine', function(){
$(this).addClass('selected-link');
});

它可以工作,但是当我点击链接时,类会被添加一秒,然后在ajax刷新后消失。似乎$(this)在ajax之后停止工作。 有什么想法吗?

3 个答案:

答案 0 :(得分:1)

$(document).on('click', '.form-item-sort-bef-combine', function(){
    $('.form-item-sort-bef-combine').addClass('selected-link');
});

也许这会解决你的问题

<强> EDITED

var tmp;

$(document).on('click', '.form-item-sort-bef-combine', function(){
    tmp = $(this).attr('class');
});


$.ajax({
                url: 'url',
                type: 'GET',
                data: data,     
                success: function(data) {
                    ...
                },
                complete: function() { 
                   $('.' + tmp).addClass('selected-link');
                }
            });

答案 1 :(得分:0)

与其他人提到的一样,我认为我们可能需要更多信息才能弄清楚发生了什么。

在切换到简单的NativeJS之后,我还没有真正使用过jQuery ..但是我觉得这样的东西可能会工作吗?

$('body').on('click', '.form-item-sort-bef-combine', function(){
    $(this).addClass('selected-link');
});

而不是$('body'),您可以尝试使用父选择器,例如$('#form-wrapper'),或者代码中可能包含的任何内容。

您的代码看起来正确..但也许 $(文档)在此上下文中不起作用?

希望这有帮助

祝你好运

答案 2 :(得分:0)

您可以在done()提供的$ajax功能或更新DOM 后的success()功能中执行此操作。

done()函数中执行此ajax函数应如下所示:

$.ajax({
    type:'POST',
    url:'/whatever',
    success:function(data){
        //update your DOM here
    }
}).done(function(){
    //add your class here
    $(".form-item-sort-bef-combine").addClass('selected-link');
});