0

私が間違っていることを理解するのを手伝ってください:私はDOM構造を持っています:

<div class="wraper">
  <div>
    <input type="checkbox" name="field_regions[und][8260]" value="8260" class="form-checkbox">               
    <label class="option" for="edit-field-regions-und-8260">Europe </label>
  </div>
  <div>
    <input type="checkbox" name="field_regions[und][8260]" value="8260" class="form-checkbox">               
    <label class="option" for="edit-field-regions-und-8260">- East Europe </label>
  </div>
  <div>
    <input type="checkbox" name="field_regions[und][8260]" value="8260" class="form-checkbox">               
    <label class="option" for="edit-field-regions-und-8260">-- Romania </label>
  </div>
</div>

私が必要とするのは、チェックされた要素の最初の親を見つけることです。(ルーマニアの場合は - 東ヨーロッパ)。

私は次のJSを持っています:

    // Force hierarchy checking.
    var selectors3 = terms.find('.form-type-checkbox');
    for (var i3 = 0, len3 = selectors3.length ; i3 < len3 ; i3++) {
      $(selectors3[i3]).bind('click', function() {              
      var test = findParent(this);
      console.log(test);
      });
    }

  function findParent(a) {
    var selector = $(a).prev();
    if (selector.find('label').text().indexOf('-')) {
      return selector;          
    }
    else {
      findParent(selector.prev(a));
    }
  }

この関数は「未定義」を返します。どこに問題がありますか?

4

3 に答える 3

2

再帰から値を返す必要があります。

else {
    return findParent(selector.prev(a));  // You're missing the 'return' here
}
于 2013-06-27T12:00:21.477 に答える
1

あなたの入力にはクラス form-checkbox があることに気付きましたが、あなたの jquery コードはこの .form-type-checkbox セレクターを使用しています。それはあなたが望むものですか?

于 2013-06-27T11:59:33.843 に答える
1

以下の行でフォームタイプチェックボックスとしてクラス名を使用しています

var selectors3 = terms.find('.form-type-checkbox');

しかし実際には、チェックボックスのクラス名は form-checkbox です

再帰関数呼び出しからの戻り値、すなわち

return findParent(selector.prev(a));
于 2013-06-27T12:00:53.147 に答える