我试图确定点击是否发生在某个节点内部。我的想法是采取节点并遍历所有后代,测试每个节点是否是点击事件目标。遍历所有后代yui3/javascript
我不确定在YUI3中获取指定节点的所有后代的最佳方法是什么。如果它在yui3中很复杂,我很乐意在纯JS中做到这一点。如果有人有更好的做法,我也会接受另一种方法。
在此先感谢您的帮助。
我试图确定点击是否发生在某个节点内部。我的想法是采取节点并遍历所有后代,测试每个节点是否是点击事件目标。遍历所有后代yui3/javascript
我不确定在YUI3中获取指定节点的所有后代的最佳方法是什么。如果它在yui3中很复杂,我很乐意在纯JS中做到这一点。如果有人有更好的做法,我也会接受另一种方法。
在此先感谢您的帮助。
var isChild = wrapperNode.contains(targetNode);
http://developer.yahoo.com/yui/3/api/Node.html#method_contains
你想创建什么,听起来很像点击委派。
我不做YUI,但你可以在这里YUI3事件代表团读了:
我知道这是同一个概念,但我不明白我怎么能使用委托来解决我的问题。 – imns 2011-03-18 15:51:49
我目前的解决方案(在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;
}
如果我了解情况,您感兴趣的节点包含一些可能会收到点击的节点。如果是这种情况,点击事件会冒泡到父节点,因此在该节点上单击就足够了。
然后再次,它可能是更复杂的,你需要做的,在这种情况下,如果我误解道歉。
看起来像我重新发明了车轮。感谢您发布此信息。 – imns 2011-03-23 14:06:00