请帮助理解我做错了什么: 我有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>
我需要的是找到checked元素的第一个父元素。 (对于罗马尼亚,它将是 - 东欧)。
我跟随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 :(得分:2)
您需要返回来自递归的值:
else {
return findParent(selector.prev(a)); // You're missing the 'return' here
}
答案 1 :(得分:1)
我注意到你的输入有课 表单复选框 ,但你的jquery代码使用这个.form-type-checkbox选择器,这是你想要的吗?
答案 2 :(得分:1)
您正在使用类名作为下面一行的表单类型复选框
var selectors3 = terms.find('.form-type-checkbox');
但实际上您的复选框的类名称为form-checkbox
并从递归函数调用返回值,即
return findParent(selector.prev(a));