setTimeout( myFunction, 1000 );
function myFunction() {
$('#content').delegate('#fileList', 'fileActionsReady',function(ev){
var $fileList = ev.fileList.$fileList;
$fileList.find('tr').each(function(){
$filename = $(this).attr('data-file');
$owner = $(this).attr('data-share-owner');
$id = $(this).attr('data-id');
getState($id,$filename,$owner,"true");
setTimeout( myFunction, 5000 );
}
正如您所看到的,我试图循环一个在我的页面中列出特定表的函数,然后它调用另一个函数来更新信息。 现在我在函数外部使用此代码时没有任何问题,但是当我把它放在函数中时它就停止工作了。 我是javascript的新手,所以我没有弄清楚搜索后的错误。
答案 0 :(得分:1)
正如我在评论中所说的那样(在复制/粘贴发生在另一个答案之前),通过调用myFunction
,你每隔5秒实际添加一个事件监听器,每次setTimeout触发时你这个:
function myFunction() {
// this below adds an event listener every time
$('#content').delegate('#fileList', 'fileActionsReady',function(ev){
我的建议是修改myFunction
并使其成为fileActionReady
回调函数(不确定它是一次还是连续触发)。所以你的最终代码应该是这样的:
$('#content').delegate('#fileList', 'fileActionsReady', myFunction);
function myFunction(ev) {
var $fileList = ev.fileList.$fileList;
$fileList.find('tr').each(function(){
$filename = $(this).attr('data-file');
$owner = $(this).attr('data-share-owner');
$id = $(this).attr('data-id');
getState($id,$filename,$owner,"true");
}
setTimeout( function(){
myFunction(ev)
}, 5000 );
}
这段代码的作用是它从收到的第一个fileActionsReady
事件开始,然后每5秒触发一次相同的函数。如果您不想等待活动,可以手动启动该功能,不要忘记传入文件列表数据(如果您确实需要)。
这是一个快速举例说明我的意思:
$('#content').on('fileActionsReady', '#fileList', myFunction);
function myFunction(ev) {
$('#r').text('tick');
setTimeout(function() {
$('#r').text('');
}, 2500)
setTimeout(function() {
myFunction(ev)
}, 5000);
}
function fireEvent() {
$('#fileList').trigger('fileActionsReady', [{
count: 1
}]);
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="fireEvent()">Fire Event</button>
<div id="r"></div>
<div id="content">
<div id="fileList"></div>
</div>
&#13;
答案 1 :(得分:0)
function myFunction() {
$('#fileList tr').each(function(){
$filename = $(this).attr('data-file');
$owner = $(this).attr('data-share-owner');
$id = $(this).attr('data-id');
getState($id,$filename,$owner,"true");
});
setTimeout( myFunction, 5000 );
}
setTimeout( myFunction, 1000 );