我正在尝试确定是否在某个节点内发生了点击。我这样做的想法是获取节点并遍历其所有后代,测试每个节点是否是点击事件目标。
我不确定在 YUI3 中获取指定节点的所有后代的最佳方法是什么。如果在 yui3 中很复杂,我愿意用普通的 JS 来做。如果有人有更好的方法,我也愿意接受另一种方法。
在此先感谢您的帮助。
我正在尝试确定是否在某个节点内发生了点击。我这样做的想法是获取节点并遍历其所有后代,测试每个节点是否是点击事件目标。
我不确定在 YUI3 中获取指定节点的所有后代的最佳方法是什么。如果在 yui3 中很复杂,我愿意用普通的 JS 来做。如果有人有更好的方法,我也愿意接受另一种方法。
在此先感谢您的帮助。
var isChild = wrapperNode.contains(targetNode);
http://developer.yahoo.com/yui/3/api/Node.html#method_contains
您想要创建的内容听起来很像点击委托。
我不做 YUI,但你可以在这里阅读 YUI3 中的事件委托:
我目前的解决方案(在 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;
}
如果我了解情况,您感兴趣的节点包含一些可能会收到点击的节点。如果是这种情况,则单击事件将冒泡到父节点,因此侦听该节点上的单击就足够了。
再说一次,您可能需要做一些更复杂的事情,在这种情况下,如果我误解了,请道歉。