遞歸的時候如果有返回值,需要return 返回,否則返回的是undefined
<script>
function findClass(data,_class) {
if($(data).hasClass(_class)){
alert($(data).hasClass(_class));
return data.attr("class");
}else{
if(data[0].tagName == "BODY"){
return false;
}else{
//遞歸
return findClass($(data).parent(),_class);
}
}
}
$(document).ready(function(){
var result = findClass($('span'),'a1');
alert(result);
});
</script>
這是因爲每次遞歸,就相當於調用一個函數,最後一次調用返回的結果需要層層返回,比如下面,如果調用a(),b(),c()的時候不加return,那麼c()返回的值就無法返回到最初調用的findClass()中。
function findClass() {
if(){
return data.attr("class");
}else{
//遞歸
return a();
}
}
function a(){
if(){
return data.attr("class");
}else{
//遞歸
return c();
}
}
function c(){
if(){
return data.attr("class");
}else{
//遞歸
return d();
}
}