この単純なセレクターの問題に数時間苦労していて、明らかな何かが欠けているに違いありません。いくつ<ul>
か<li>
のがネストされたがあり<ul>
ます。それぞれ<li>
にリンクが含まれており、これをクリックすると(ナビゲートするのではなく)関数を実行したいのですが、重要なのは、これは親に含まれるリンクに対してのみ発生し<ul>
、ネストされたに存在する可能性のあるリンクに対しては発生しないこと<ul>
です。あなたが思うだろう単純な:
HTML:
<ul>
<li>
<a href="dontleavethis.page">A link</a>
<ul>
<li><a href="navigate.there">A nested link</a></li>
<li><a href="navigate.somewhere">Another nested link</a></li>
</ul>
</li>
</ul>
jQuery:
$('li:has(ul) a').click(function() {
bla bla bla...
return false;
});
セレクターをどのように表現しても、ネストされたリンクが<ul>
クリックハンドラーをトリガーするのを止めることはできません。それらは明らかにセレクターの基準に一致しません":has(ul)"
が、ハンドラーは何らかの理由で接続されたままになります。私はここで何が間違っているのですか?