2013-06-27 71 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 
}