Jquery函数只能工作一次

时间:2011-08-15 10:58:57

标签: jquery

这是一个问题:

我需要jquery来执行一些PHP脚本然后返回一些结果。页面上有一个分页(由php生成)。所以可能有两种情况。用户从外部链接转到该页面=>分页从一开始就开始。或者用户选择页面=> jquery再次运行php并获得新的分页和结果。 这是一个脚本:

var page = '';
$.getJSON("test.php", {resid: "[[*id]]"}, function(output) {
    $('#testdiv').html(output.content).show();
    $('#pagination').html(output.pagination).show();
    $('a.pagenav').click(function() { 
        page = $(this).attr('href');
        $.getJSON("test.php", {resid: "[[*id]]", spp: page}, function(output) {
        $('#testdiv').html(output.content).show();
        $('#pagination').html(output.pagination).show();
        });
        return false;
    });
});

该脚本适用于inilial load(生成分页),然后一次选择页面。但是下次我选择一个页面时,它只是跟着它的网址。 需要帮忙 ) THX

1 个答案:

答案 0 :(得分:1)

您遇到问题的原因是您单击的下一页不再绑定点击处理程序。您需要将事件绑定到另一个元素,即使在加载新页面后该元素也存在。在您的情况下,#pagination似乎是一个很好的候选人。

var page = '';
$.getJSON("test.php", {resid: "[[*id]]"}, function(output) {
    $('#testdiv').html(output.content).show();
    $('#pagination').html(output.pagination).show();
});

$('#pagination').delegate('a.pagenav', 'click', function() { 
    page = $(this).attr('href');
    $.getJSON("test.php", {resid: "[[*id]]", spp: page}, function(output) {
      $('#testdiv').html(output.content).show();
      $('#pagination').html(output.pagination).show();
    });
    return false;
});

一种不太推荐的方法(但更容易重构代码)是使用live(),它将事件绑定到DOM树的根元素。

$('a.pagenav').live('click', function() {
    ...
});