Jquery脚本没有在Django分页页面上运行

时间:2014-07-19 12:15:04

标签: jquery django pagination

我四处寻找并试了很多东西,但似乎没什么用。

问题: 有一个jQuery脚本可以在第一页上完美运行,但不能在任何其他分页页面上运行。我对上下文变量有同样的问题,但我通过在上下文处理器中添加这些变量来解决它,但我不知道在jQuery时解决这个问题。

分页jQuery:

<script>
function ajax_get_update()
{
   $.get(url, function(data){
      var span = $("span.step-links", data);
      $('.blog-home').html(data);
      $('.step-links').html(span);
    }, "html");
}

$( document ).ready( function() {
    $( '.step-links #prev' ).click( function(e) {
        e.preventDefault();
        url = ($( '.step-links #prev' )[0].href);
        ajax_get_update();
    });

    $( '.step-links #next' ).click( function(e) {
        e.preventDefault();
        url = ($( '.step-links #next' )[0].href);
        ajax_get_update();

    });
});

$( document ).ajaxStop( function() {
    $( '.step-links #prev' ).click( function(e) {
        e.preventDefault();
        url = ($( '.step-links #prev' )[0].href);
        ajax_get_update();
    });
    $( '.step-links #next' ).click( function(e) {
        e.preventDefault();
        url = ($( '.step-links #next' )[0].href);
        ajax_get_update();
    });
});

当我删除.ajaxStop函数时,jQuery对于分页页面变得可见,但随后分页本身就会出错,因为它不会让我看到第二页。

我希望在每个分页页面上运行的jQuery:

$(document).ready(function delete_blog(){
$("a[name^='delete-blog']").on("click", function(event){
    event.preventDefault();
    //alert($(this).attr('href'));
    $.ajax({
        url: $(this).attr('href'),
        type: "POST",
        data: {
            "csrfmiddlewaretoken":"{{csrf_token}}"
            },

        success: function(response){

            window.location.href = "some url";
        },
        headers: {
            'X-Requested-With': 'XMLHttpRequest'
        }
    });
});

});

有没有解决方法?如果您需要更多信息,请与我们联系。 请回复:P没有人回复我的上一个问题: https://stackoverflow.com/questions/24639390/django-pagination-context-variables-are-lost-in-pages-other-than-first-page但是没关系可能是一个愚蠢的问题,也可能是这个问题,但请帮忙。谢谢:))

1 个答案:

答案 0 :(得分:2)

您应该以另一种方式绑定处理程序。您要链接.on.click处理程序的对象,仅在页面加载时计算一次(这就是您需要ajaxStop的原因)。如果将它们连接到document(或其他静态,不可更改的元素),它们将会很好地工作:

$(document).on("click", "#prev", function(event){});
$(document).on("click", "#next", function(event){});
$(document).on("click", "a[name^='delete-blog']", function(event){});

P.S。不要使用.class #id选择器,它们非常慢。 #OnlyID更好。