Obecnie mam funkcję, że iteruje w wielu divs, znajduje div z nazwą klasy ".coursearea" i zwróć go do dołączania

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

Druga funkcja do przetwarzania zwrotu

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

Konsola wydrukuje "niezdefiniowane", a zatem nie mogę zrobić .Append ().

Ale jeśli konsola.log tuż przed powrotem, zwraca [<ul class=​"courseArea">​</ul>​]

Wiem, że działa, jeśli nie używam funkcji. (). Muszę jednak wybrać identyfikator.

Czy ktoś wie, co tu jest nie tak? Lub alternatywy? Dzięki

0
user1305850 27 listopad 2013, 02:53

2 odpowiedzi

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

    return result;
}

Zwracanie wartości funkcji wewnętrznej wewnątrz niego oczywiście nie wpływa na wartość zwracania funkcji GetcourseareAbysemester!

2
Anders Lindén 26 listopad 2013, 23:00

Nie wrócisz niczego od getCourseAreaBySemester. A return w each jest zamknięty i powraca tylko w each Callback

Możesz uprościć i wystarczy użyć identyfikatora jako selektora od czasu identyfikatora na stronie są wyjątkowe:

function getCourseAreaBySemester(sem_id) {   
    return $('#'+sem_id).find('.courseArea');
}
2
charlietfl 26 listopad 2013, 23:03