私はこれを理解することはできません。私はいくつかの検索を行い、見つけたものは機能すると思いますが、機能しません。
私はこのような構造を持っています。
数字をクリックすると、アンカーが削除されます。その後別の数字をクリックしたときに、どの数字にアンカーがないか、またはアンカーによってラップされていないテキストを知りたいです。テストに関係なく、私は常にliの全範囲を取得します..テストに合格することはありません。
次のケースでは、要素からの LI のコレクションを繰り返しています。
var page = jQuery('#thiselement');
jQuery.each(page.find('li'),function(){
if(jQuery(':not(:has(a))',this)){
// also tried jQuery(this), no luck
// no matter what, it ALWAYS falls in this conditional
// if the LI has a link or not, it gets in here
}
}
<ul id="thiselement">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
</ul>
テストに合格したものは何でもアンカータグでラップする必要があります。したがって、テストが条件付きで実行されると、次のようになります。
<ul id="thiselement">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li>4</li>
<li><a href="#">5</a></li>
次に... 4 番目の li はテストに合格します。これは、"a" を含まない "this" であるためです。