2013-06-27 139 views
0

請有助於瞭解我在做什麼錯: 我有DOM結構:廣東話返回值的JQuery遞歸

<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)); 
    } 
    } 

這個函數返回我 「未定義」。哪裏可以解決問題?

+0

您的calss選擇器'form-type-checkbox'是錯誤的,它應該是'.form-checkbox' –

+0

什麼是'terms' ..? –

+0

東歐不是羅馬尼亞BTW的母公司 –

回答

1

您使用的類名作爲表格型複選框下面一行

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

但在實際的複選框具有類名稱的形式複選框

和遞歸函數調用的返回值,即

return findParent(selector.prev(a)); 
1

我注意到你的輸入有 form-checkbox ,但你的jQuery代碼使用這個.form-type-checkbox選擇器,你想要什麼?

2

您需要回報從遞歸值:

else { 
    return findParent(selector.prev(a)); // You're missing the 'return' here 
}