1

この種の質問は半分の人にとっては簡単だと思いますが、私はこれに何時間も悩まされているので、助けていただければ幸いです。ここに私が苦労しているものがあります:

hrefで終わる属性を含むすべてのリンク要素を選択する必要があります.pdf。私はこの解決策を持ってきました:

$('a[href$=".pdf"]').filter(function() {
    return $(this).parent().has('ul');
  })
})

ただし、何が$(this).parent().has('**anytag**')何であるかに関係なく、常に true を返すよう"anytag"です (これは firebug で確認しました)。私のコードは壊れていますが、なぜこの予期しない動作をするのか理解できません。ここで私の誤解を指摘していただけますか?

4

1 に答える 1

3

.has()はフィルタ関数そのものです。セレクターに一致する要素を子孫として持つ要素を持つ新しい jQuery セットを返します。jQuery セットはスルーシーであるため.filter()、何も除外されないため、それらを返しても効果はありません。

:has代わりに、セレクターを子セレクターと組み合わせて使用​​できます。

$(':has(ul) > a[href$=".pdf"]');
于 2012-11-13T15:49:13.210 に答える