至于下面的函数,我已经在过去的时间重写了十几次:递归调用Ajax
function show_history() {
$('.job.collapsed').click(function() {
$(this).removeClass('collapsed');
$(this).addClass('expanded');
$(this).children('.bottom').load('expand.php', function(){
$('.job.expanded').click(function() {
$(this).removeClass('expanded');
$(this).addClass('collapsed');
$(this).children('.bottom').html('');
$(show_history);
});
});
});
}
这一点我最初称这样:
$(document).ready(function() {
$('#main').load('jobs.php', show_history);
});
的第一时间我点击一个'.job',1个请求发送到'expand.php'
第二次点击也会向'expand.php'发送1个请求,尽管'.job'没有'.collapsed'类。
第三届点击发送2个请求,第4发3个请求,5号发送6个请求,第六发送请求9,第7发送18名的请求,8日发送27个请求等
我想它在单击折叠作业时发送1个请求,当单击扩展作业时没有请求。
我该如何解决这个问题?
编辑
我使用的解决方案的基础上,@ mblase75的建议:
function show_history() {
$('.job.collapsed').live('click',function() {
$(this).removeClass('collapsed');
$(this).addClass('expanded');
$(this).children('.bottom').load('expand.php');
});
$('.job.expanded').live('click',function() {
$(this).removeClass('expanded');
$(this).addClass('collapsed');
$(this).children('.bottom').html('');
});
}
这使我在正确的轨道上。将'.job.expanded'和'.job.collapsed'事件分开,将它们设置为'.live('click')'并停止调用该函数。精彩地工作。 – Chris
@Chris很高兴听到它 - 不要忘记接受你最喜欢的答案。 http://meta.stackexchange.com/q/5234/171394 – Blazemonger