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

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

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

 $(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); }); 

})

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

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

你可以在这里阅读更多相关信息

您有可能返回的HTML包含带有ID #dates_up#dates_down的元素的新版本吗? 那就是问:他们住在#cash_grid里面吗?

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

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