.click()事件仅在第一次执行
我有下一个脚本,“/ cashflow/arrow /”调用一个django视图来获取数据并使用它。然后它返回在html中加载的数据。.click()事件仅在第一次执行
该脚本在第一次点击中工作正常,但是当我想再次单击链接时,没有任何反应。
<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);
});
})
尝试使用.live("click", function() {...});
代替点击事件。 如:
$("#dates_up").live("click", function()...
$("#dates_down").live("click", function()...
你可以阅读更多关于它here
以任何机会,做你恢复包含与IDS #dates_up
和#dates_down
元素的新版本的HTML?那就是问:他们住在#cash_grid
里面吗?
如果是这样,那么当您更新HTML时,您在document.ready
中绑定的点击事件将丢失,因此您必须重新绑定这些点击事件。
最简单的方法是将您的click()绑定代码放在一个单独的函数中,在document.ready()中调用它以设置绑定,然后在AJAX的get()回调中调用它对已返回的新元素设置新绑定
,或者更确切地说,你可以现场使用()作为佩德罗说: – 2010-09-16 22:54:46
感谢史蒂夫!你的解决方案也能正常工作。 – mfalcon 2010-09-16 23:09:11
谢谢佩德罗!它工作! – mfalcon 2010-09-16 23:07:59
'.live()'在1.9+版本中被删除,正如链接文档中所述('.on()'现在是首选)。 – 2013-03-06 20:58:40