1
道場鼠標懸停我希望做類似如下:與延遲
- 當鼠標去到一些元素,它記錄
- 如果鼠標在那裏停留3秒鐘,然後執行一些動作
f()
對於該元素 - 如果鼠標在3秒之前離開該元素,則不應執行該操作。
如何在可能取消的情況下執行此延遲執行?因爲我在我的項目中使用DOJO工具包,所以使用DOJO庫的答案會更好。
道場鼠標懸停我希望做類似如下:與延遲
f()
對於該元素如何在可能取消的情況下執行此延遲執行?因爲我在我的項目中使用DOJO工具包,所以使用DOJO庫的答案會更好。
嘗試以下操作:
var delay = 3000;
dojo.forEach(dojo.query(".some-element-set"), function(element) {
dojo.connect(element, "onmouseover", function() {
// dojo.partial(f, this.id) will apply `this.id` to `f`, but it
// will not execute it and will only a new function
this._timer = setTimeout(dojo.partial(f, this.id), delay);
});
dojo.connect(element, "onmouseout", function() {
// this._timer was set as an element attribute in the above event
// handler so we don't have to keep track of them separately in
// some silly array/object
clearTimeout(this._timer);
});
});
見query,forEach,connect和partial文檔瞭解更多信息。
編輯︰我已經更新我的答案每OP的評論
這看起來不錯。我想我需要一個更通用的版本。我有一組元素(每個都有不同的id),我需要用元素的id調用函數f。這會太難嗎? – 2009-12-10 07:26:20
我編輯了我的答案。看一看。 – 2009-12-10 12:19:29
Thanx ..這個岩石:) – 2009-12-11 09:58:58