我有我的代碼有問題正常工作,我有2個表裝入兩個div像這樣:的setTimeout不使用jQuery和load()
loadTable($("#vbeTable"),'getUpdateA')
loadTable($("#vbcTable"),'getUpdateB')
我也有這樣的:
$("#vbeTable, #vbcTable").live('mouseover mouseout', function(event) {
if (event.type == 'mouseover') {
// console.log('hovering over',$(this));
$(this).attr('update',false)
} else {
// console.log('NOT hovering over',$(this));
$(this).attr('update',true)
}
})
和可裝入函數是如下所示:
function loadTable($table, $php, $noRefresh){
if($table.attr('update') == 'false'){
console.log('not updating', $table, $table.attr('update'))
setTimeout(function() { loadTable($table, $php); }, 1000)
}
$table.load($php+'.php',function(response, status, xhr) {
if (status == "success") {
if(!$noRefresh){
console.log('acquired table')
setTimeout(function() { loadTable($table, $php); }, 1000)
}
}
else {
console.log('error aquiring lock on', $table.attr('id'), response, status, xhr)
}
});
}
*由於某種原因,setTimeout函數不等待的時間適量並在控制檯中我得到:
(96)liveLoads.js:35acquired表
(7711)liveLoads.js:29not更新[<div id="vbcTable" update="true">…</div>
] false
(2)<exception> <exception> <exception> <exception>
* orginally vbe和vbc都是空的div。
enyone可以幫我嗎?
* UPDATE *
我也有這樣的代碼:
function expand(EntID) {
console.log('expand',EntID)
$.ajax({
url: "showRows.php?ID=" + EntID
});
}
,當被點擊桌子上的東西,調用該函數運行。
但隨後的其他功能一個定時器,進入迷惑不解,他們被調用連續一百萬次,而不注意你打電話你超時的回調函數,而不是將它傳遞給超時的時間
嗯,似乎工作。爲什麼只是'setTimeout(loadTable($ table,$ php),1000)'不起作用? – Neal 2011-03-08 21:25:06
@maniator:就是這樣:)'setTimeout'的第一個參數需要是稍後調用的函數。相反,'loadTable($ table,$ php)'會被立即計算出來,它的*返回值*被傳遞給'setTimeout',這不是你想要的。 – Matchu 2011-03-08 21:25:31
因爲loadTable($ table,$ php)實際上調用了loadTable。結果然後傳遞給setTimeout。 – Dimitry 2011-03-08 21:26:03