2013-11-26 63 views
0

目前,我有一個功能,通過多個div迭代,發現一個div「.courseArea」的類名,並返回到另一個jQuery的每一個,發現,並追加

function getCourseAreaBySemester(sem_id) { 
    $(".semesterPanel").each(function() { 
     if($(this).attr('id') == sem_id) { 
      return $(this).find('.courseArea')); 
     } 
    }); 
} 

第二附加函數來處理返回

var targetSemester = getCourseAreaBySemester(semesterData[i]['semester_id']); 
      console.log(targetSemester); 
      targetSemester.append(createCourse(semesterData['courses'][j])); 

控制檯打印出「未定義」,因此,我不能執行.append()。

但是,如果我在返回之前CONSOLE.LOG正確的,它返回[<ul class=​"courseArea">​</ul>​]

我知道它的工作原理如果我不使用。每()函數。不過,我需要通過ID選擇。

有人知道這裏有什麼問題嗎?還是另一種選擇?謝謝

+2

你可以添加你的HTML – Sico

+0

第一個代碼塊中的'function'關鍵字是做什麼的? –

+1

這些「功能」都不是實際的「功能」。第一種語法是關閉的,第二種語法只是一堆函數調用。 –

回答

2
function getCourseAreaBySemester(sem_id) { 
    var result; 
    $(".semesterPanel").each(function() { 
     if($(this).attr('id') == sem_id) { 
      result = $(this).find('.courseArea')); 
     } 
    }); 

    return result; 
} 

返回裏面的函數的值顯然不會影響getCourseAreaBySemester函數的返回值!

+0

糟糕。那樣做了。謝謝。 – user1305850

2

你沒有從getCourseAreaBySemester返回任何東西。內each一個return被關閉,each回調中唯一的回報

你可以簡化和只使用ID的選擇,因爲ID在一個頁面是唯一的:

function getCourseAreaBySemester(sem_id) { 
    return $('#'+sem_id).find('.courseArea'); 
} 
+0

謝謝,這聽起來像是一個很好的解決方案。 – user1305850