.click()事件仅在第一次执行

时间:2010-09-16 22:32:03

标签: jquery ajax django

我有下一个脚本,“/ cashflow / arrow /”调用django视图来获取数据并使用它。然后它返回在html中加载的数据。

该脚本在第一次单击时工作正常,但是当我想再次单击链接时,没有任何反应。

<script>
$(document).ready(function(){   
    var prev_months = {{ prev_months }}
    var next_months = {{ meses_desp }}  

    function arrow(meses_ant, next_months) {
        $.get("/cashflow/arrow/", { prev_months: prev_months,   next_months: next_months},
          function(data){
            $("#cash_grid").html(data);      
         });
    }

    $("#dates_up").click( function() {
        if (prev_months > 0) {
            prev_months = prev_months - 1;
        }
        next_months = next_months + 1;
        arrow(prev_months, next_months);
    });
    $("#dates_down").click( function() {
        prev_months = prev_months + 1;
        if (next_months > 0) {
            next_months = next_months - 1;
        }
        arrow(prev_months, next_months);
    });

})

2 个答案:

答案 0 :(得分:2)

尝试使用.live("click", function() {...});代替点击事件。 例如:

$("#dates_up").live("click", function()...
$("#dates_down").live("click", function()...

您可以阅读更多相关信息here

答案 1 :(得分:1)

您输入的HTML是否包含具有ID #dates_up#dates_down的新元素的新版本?那就是问:他们住在#cash_grid内吗?

如果是这样,那么当您更新HTML时,您在document.ready中绑定的点击事件将丢失,因此您必须重新绑定这些点击事件。

最简单的方法是将click()绑定代码放在一个单独的函数中,在document.ready()中调用它来设置绑定,然后在AJAX get()回调中调用它来设置新绑定已返回的新元素