2

WebサンプルからJqueryとJavascriptを学んでいます。私は実用的な知識を十分に持っていますが、いくつかのコードはまだ私をつまずかせます。次のコードは、ショッピング カートでチェックアウト ボタンを非表示にし、カートの最小要件に関するメッセージを表示する div に置き換えるために使用されます。ただし、コードの一部が私を悩ませています。

function getCollectionCount() {
  var totalCollectionCount = 0;    
  var collection = $('td[alt*="Collection"]');
  for (var i = 0; i < collection.length; i++) {
    var curVal = $(collection[i]).find("select").val();
    if (curVal != undefined){
      totalCollectionCount += parseInt(curVal);
    }
  }

この部分はどういう意味ですか?

var collection = $('td[alt*="Collection"]');
4

4 に答える 4

7

td[alt*="Collection"]次のような、属性が を含むすべての<td>要素を選択します。altCollection

<td alt="Collection"></td>
<td alt="CollectionFoo"></td>
<td alt="BarCollection12324343"></td>

だがしかし

<td></td>
<td alt=""></td>
<td alt="Foo"></td>

補足: これは非常に基本的な質問であり、jQuery セレクター API ドキュメントを読むことで簡単に答えることができます。

質問する前に調べてみてください!

于 2011-09-25T16:28:26.633 に答える
1

このコードは、次のように簡単かつ簡潔に書き直すことができます。

function getCollectionCount() {
    var totalCollectionCount = 0;    
    $('td[alt*="Collection"] select').each(function() {
        var val = this.value || "0";
        totalCollectionCount += parseInt(val, 10);
    });
    return(totalCollectionCount);
}

そして、これはそれがどのように機能するかです:

  1. totalCollectionCount を 0 に初期化します
  2. alt 属性に文字列「Collection」を持つすべての td 要素を検索し、その td 内の選択要素を検索します
  3. 上記の条件に一致する見つかったすべての要素を反復します
  4. select オブジェクトの値、または値がないか空の場合は「0」でローカル変数を初期化します
  5. その値を数値に変換し (基数を parseInt に渡して推測しないようにする必要があります)、これまでの小計に追加します。
  6. 見つかった合計を返します。
于 2011-09-25T16:56:56.260 に答える
1

これは、jQuery 属性セレクター句です。文字列に value が含まれるtdという名前の属性を持つ要素を選択しています。 altCollection

セレクターを含む: http://api.jquery.com/attribute-contains-selector/

jQuery には、便利な属性セレクターが多数あります。以下は、それらのメインの参照ページです。jQuery を始めたばかりの場合は、読む価値があります。

于 2011-09-25T16:30:08.017 に答える
1

このコードは、「alt」属性に「Collection」が含まれるすべての td 要素を返します。

http://api.jquery.com/attribute-contains-selector/

jQuery には、覚えるのに永遠にかかるファンキーなショートカットがたくさんあります。そのため、私は常にjQueryのコピーを机の上で動作させています :)

于 2011-09-25T16:30:12.730 に答える