似たようなタイトルの質問を見たことがありますが、まったく同じではありません。
まず、YUI (Liferay 6.0 との互換性のために 3.2.0) を使用しています。
私はすでにNode
参照を持っています。Node
私の目標は、特定の CSS セレクターに一致する最初の子を取得することです。最初に、私はこれをしていました:
...
parse: function(node) {
var title = node.one('>span, >div, >a, >h1');
...
},
...
これは Firefox、Chrome、IE 9 以降で動作します。ただし、IE 8 をサポートする必要があります。
これは、実際にはそうではないように見えますが、仕様に従って、親が必要であることを示しているようです。そこで、もう少し調べてみると、jQuery が実際にこの特定のケースが非推奨になっていると言及していることがわかります。
注: $("> elem", context) セレクターは、将来のリリースで廃止される予定です。したがって、代替セレクターを使用する代わりに、その使用はお勧めできません。
このケースについて YUI のドキュメントで明示的に言及されているのを見つけることはできませんが、それでも安全に使用できるとは思えません (とにかく IE8 ではサポートされていません)。*>span, *>div, ...
、 を使用するなど、さまざまなことを試しました*:first-child+span, ...
が、うまくいきませんでした。だから私が残っているのはこれです:
var title = node.get('children').filter('>span, >div, >a, >h1').item(0);
しかし、背後にあるコードには多くのループがあるため、これは洗練されておらず非効率的です (フィルターは短絡せず、最初の一致だけが必要なため)。誰にもより良い提案がありますか?