0

次のコードで私を助けてください。わかりません。私のプロジェクトでは、このようなスニペットを使用する必要があります。

$('strong', this)<-この部分は私にはまったくわかりません。

可能であれば、コード全体を 1 行ずつ説明してください。

<ul>
   <li><strong>list</strong> item 1 -
      one strong tag
   </li>
   <li><strong>list</strong> item <strong>2</strong> -
      two <span>strong tags</span>
   </li>
   <li>list item 3</li>
   <li>list item 4</li>
   <li>list item 5</li>
   <li>list item 6</li>
</ul>

JavaScript:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
}).css('background-color', 'red');
4

2 に答える 2

1

$('strong', this)フォーマット付きのjQueryセレクター$(target, context)です。

あなたのコードによると:

thisそのタグ内のそれを参照しli$('strong', li)検索しています。<strong>li

このステートメントは、次のように書くこともできます。

$(this).find('strong')jQuery ライブラリ コードから次のことがわかります。

$(target, context)形式を内部的に実装する

$(context).find(target)処理する。

詳細については、こちらを参照してください

于 2012-09-13T17:15:34.333 に答える
1

コードは基本的に、jQuery を使用して li 要素のリストを取得します$('li')(これにより、ページ上のすべての<li> ... </li>タグが取得されます)。次に、関数を使用してこのセットを削減し、.filter関数filterを引数として取り、リスト内の各要素に対して関数が呼び出されます。 true を返す場合、要素はフィルターからリストに返されます。false を返す場合、項目は無視されます。

このコンテキストでは、関数呼び出し$('strong', this).length == 1this、現在フィルターによってチェックされていると判断されているliタグです。他の回答で述べたように<strong>..</strong>、現在のliのタグのリストを返すことを単にチェックしています。現在の li に strong がない場合、長さは 0 であるため、関数は を返しますfalse。これは、フィルタが生成するリストにその要素を返さないことを意味し、次の li に移動します。

これは、コードの最初の部分が単純に、強力なタグを含む li のリストを生成することを意味します。これは、cssこれらのタグをすべて赤で色付けする関数と連鎖しています。

それが役立つことを願っています。

于 2012-09-13T17:39:01.520 に答える