English 中文(简体)
我如何在树的所有节点上运行一些代码?
原标题:
  • 时间:2009-03-11 06:13:02
  •  标签:

我想在所有TreeView节点上运行一些代码,取决于从数据库返回的值,并重复此操作,直到返回某个特定的值。

我在想:

  1. Give all my tree nodes the same css class so I can access them from JQuery
  2. have a timer in my JQuery function that used ajax to go to the database, when a certain value is returned then stop the timer

Two questions here. How can I make my function run for each of the nodes and how do I do a timer in JavaScript, so:

$(function(){
    $( cssClassOfAllMyNodes ).WhatFunctionToCallHere?((){

//How do I do Timer functionality in JavaScript?
ForEachTimeInterval
{
   //use Ajax to go to database and retrieve a value
   AjaxCallBackFunction(result)
   {
     if (result = 1)
     //How to stop the timer here?
   }
}
Sorry, but there is no text to translate. Please provide the text that needs to be translated into Chinese.

Sorry, but there is no text to translate. Please provide the text that needs to be translated into Chinese.

希望我说得清楚。非常感谢。


非常感谢您的回答。我想请您对设计进行评论。

基本上我要实现的是Windows Workflow类型的功能,在我的树形结构中,每个节点根据其状态更新其图像,其状态是通过查询数据库得到的,该数据库具有与树节点唯一关键字。如果您有任何其他实现方式的想法,我很乐意听取您的建议。再次感谢。

最佳回答

你可以做:

$(function(){
  $( cssClassOfAllMyNodes ).each(function (){
    // Do something with "this" - "this" refers to current node.
  });
});

在JS中处理定时器的正确方法是要有每个超时或间隔的引用,然后清空它们。

它们之间的区别是:

  • The timeout will only run once, unless stopped before;
  • The interval will run indefinitely, until stopped.

所以你可以做类似这样的事情:

var delay = 2000; // miliseconds
var timer = setTimeout("functionToBeCalled", delay);
clearTimeout(timer); // whenever you need.

请注意,您可以将一个字符串传递给setTimeout(与setInterval相同),其中包含要调用的函数的名称。或者您可以传递对函数本身的引用:

var callback = function () { alert(1); };
var timer = setTimeout(callback, delay);

请确保不为AJAX请求设置间隔,因为您的响应可能会延迟,连续的对服务器的调用最终可能会重叠。

相反,你应该调用setTimeout,当答案到达后再次调用setTimeout。

问题回答

请不要评论您的设计,您可以参考这些。

$.each()

setTimeout()或setInterval()





相关问题
热门标签