0

我正在尝试确定是否在某个节点内发生了点击。我这样做的想法是获取节点并遍历其所有后代,测试每个节点是否是点击事件目标。

我不确定在 YUI3 中获取指定节点的所有后代的最佳方法是什么。如果在 yui3 中很复杂,我愿意用普通的 JS 来做。如果有人有更好的方法,我也愿意接受另一种方法。

在此先感谢您的帮助。

4

4 回答 4

1

var isChild = wrapperNode.contains(targetNode);

http://developer.yahoo.com/yui/3/api/Node.html#method_contains

于 2011-03-23T06:13:24.513 回答
0

您想要创建的内容听起来很像点击委托。

我不做 YUI,但你可以在这里阅读 YUI3 中的事件委托:

http://www.yuiblog.com/blog/2009/11/13/event-delegation-3/

http://kickballcreative.com/yui/demos/event-delegation/

于 2011-03-18T15:43:52.923 回答
0

我目前的解决方案(在 YUI3 中)以防万一有人遇到同样的问题。随时发布改进。

   function isChild(targetNode, wrapperNode) {
        var descendants = wrapperNode.all('*');
        var counter = 0;
        descendants.each(function(node) {
            if(node == targetNode) {
                counter++;
            }
        });
        return (counter > 0) ? true : false;
    }
于 2011-03-18T18:18:47.310 回答
0

如果我了解情况,您感兴趣的节点包含一些可能会收到点击的节点。如果是这种情况,则单击事件将冒泡到父节点,因此侦听该节点上的单击就足够了。

再说一次,您可能需要做一些更复杂的事情,在这种情况下,如果我误解了,请道歉。

于 2011-03-22T18:31:27.597 回答