yui中.on和.delegate有什么区别?

时间:2014-12-09 09:42:25

标签: yui yui3

我是YUI的新手。有些人可以告诉我为什么我只能使用第二种方法?

Y.all('div span').on('mouseover',mOver); Y.one('div').delegate('mouseover',mOver,'span');

1 个答案:

答案 0 :(得分:1)

第一个为每个div span元素附加一个单独的事件监听器。如果有很多元素,那么你创造了很多事件,使用了更多的内存等等。即使你这样做,你可能意味着on而不是delegate - 就像你&# 39;写完这篇文章,我不认为这两个陈述是等价的。

正如你已经写过的那样,第一种方法是为每个div span添加一个委派的事件监听器 - 因此它将捕获从跨度的子元素冒出的事件。

第二个将单个事件监听器附加到父div元素。子span元素上的任何事件都会通过DOM冒泡*并被事件监听器捕获。

你不应该只使用第二种方法。使用第一种方法可能有合理的理由。但是,在许多情况下(至少根据我的经验),事件委派是首选,因为它更有效,更易于管理。

(*)您可能希望阅读此What is event bubbling and capturing?有关事件冒泡的信息。事件通过DOM冒泡,除非它们在DOM下方的事件监听器停止(YUI中为halt())。

此外,如果您现在知道,YUI已被雅虎终止,据我所知,将来任何人都不会维护(http://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui