我看过类似标题的问题,但它们并不完全相同。
首先,我使用 YUI(3.2.0 与 Liferay 6.0 兼容)。
我已经有Node
参考了。我的目标是获得Node
与给定 CSS 选择器匹配的第一个孩子。起初,我是这样做的:
...
parse: function(node) {
var title = node.one('>span, >div, >a, >h1');
...
},
...
这适用于 Firefox、Chrome 和 IE 9+。但是,我们必须支持 IE 8。所以我深入研究并找到 w3c 参考说明:
这似乎表明,根据规范,父母是必需的,尽管在实践中似乎并非如此。所以我再搜索了一下,发现 jQuery 实际上提到了这个特定的情况正在被弃用:
我在 YUI 文档中找不到明确提及这种情况,但我仍然认为使用它并不安全(无论如何 IE8 都不支持它)。我尝试了很多东西,包括使用*>span, *>div, ...
, *:first-child+span, ...
,但它们没有用。所以我剩下的是:
var title = node.get('children').filter('>span, >div, >a, >h1').item(0);
但这似乎不优雅且效率低下,因为它背后的代码会有很多循环(因为过滤器不会短路,我想要的只是第一次匹配)。有人有更好的建议吗?