【问题标题】:jQuery: Add Class to AJAX-loaded PaginationjQuery:向 AJAX 加载的分页添加类
【发布时间】:2012-11-06 21:54:25
【问题描述】:
$(".paginate li").click(function(){
    $(this).attr('class','current');    
    $("#ajax_results").load("test.php?page=" + $(this).attr('rel')).fadeIn();
});

以上代码用于分页脚本。当用户单击分页

  • 时,AJAX 脚本会根据 rel 值触发请求。我遇到的问题是:
    $(this).attr('class','current');
    

    它会应用一秒钟然后消失。理想情况下,它将对单击的

  • 应用一类“当前”并保留。我不确定为什么它在应用后立即被删除。
  • 【问题讨论】:

    • 如果您注释掉第二行并使用$(this).addClass('current'); 是否有效?现在尝试取消注释第二行,这仍然有效吗?反复试验。
    • this 的后代#ajax_results
    • @Martin - 很抱歉,我应该指定我已经尝试过 addClass() 函数无济于事。 attr() 和 addClass() 在这种情况下的行为相同;高亮显示并立即被移除。
    • @Kevin 它是$(".paginate li").click(function(){ 的后代,所以它是“被点击的类分页的LI”
    • 对,但我的问题是,无论如何它是#ajax_results 的后代。它是.paginate li 的后代并不能回答这个问题,它可能两者兼而有之。

    标签: jquery ajax pagination


    【解决方案1】:

    我已经解决了自己的问题,并认为我会发布解决方案。查看代码后,很明显添加类的问题是,一旦进行 AJAX 调用,就不再定义 $(this)。可能有一个更优雅的解决方法,但我所做的如下:

    $(".paginate li").click(function(){
        var rel = $(this).attr('rel');
    
        $("#ajax_results").load("/ajax.php?id=" + $(this).attr('rel'), function(response, status, xhr) {
            if (status == "success") {
                $("li[rel="+rel+"]").addClass('current');
            }
        });
    });
    

    我将rel 声明为$(this).attr('rel') 的值,然后在成功时将addClass() 函数传递给相关项目。完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多