所以我使用jquery .load来自动刷新页面中的DIV。
var refreshId = setInterval(function() {loadAdminTab()}, 30000);
});
function loadAdminTab(){
$( "#maintab" ).load( "admintab2.php", function() {
$('#loadingsq').fadeOut(0);
});
}
我还在$(document).ready load中运行“loadAdminTab”。在初始加载时,加载的DIV中的所有函数都能正常工作。但是,在第一个间隔运行之后。加载的DIV中的某些功能停止工作。
如:
< input type="button" id="showdivitem1" value="Button" ><br>
< div id="item1" style="display:none;" >Div Display</div>
<script>
$('#showdivitem1').mousedown(function(){
$('#item1').show();
});
</script>
就像我说的那样,在页面初始加载之后,一切都很顺利,但是一旦后续的.loads运行,$('#item1').show();
将无法在我的生活中工作。
正在加载的文档和div中重置某些内容。
这是我的确切代码,它仍然没有在#maintab中触发。这个代码再次出现在维护者中,而不是在父母之外,是问题吗?
$('#maintab').on('mousedown','#transferCall<?php echo $callid; ?>', function(){
$('#transfer<?php echo $callid; ?>').css('display','block');
});
答案 0 :(得分:3)
由于您正在将内容重写为#maintab
,因此,如果新请求更改其内容,则您在DOMready
定义一次的所有事件处理程序(对于其中的节点)将无法工作(即使注入该容器内的新元素是相同的:定义的处理程序附加到不再存在的节点上。
所以你需要使用event delegation并在#maintab
(或父元素)上捕捉你的事件
E.g。你的例子变成了
$('#maintab').on('mousedown', '#showdivitem1', function(){
$('#item1').show();
});
您正在将处理程序设置为#maintab
(在每个ajax请求时都不会删除该节点),这会捕获mousedown
元素中#showdivitem1
事件的传播