views:

47

answers:

2

Firebug is complaining about this line:

$("#original-description").text(response['course']['original_description']).hide();

Do I have a syntax error? Looks fine to me.

More context:

bindOnSuccess($('#course-search'), function(response) {
    if (!response) {
        $("#system-status").text("Sorry, no course could be found for that search.");
    }
    else {
        $(".dept-code").text(response['course']['dept_code']);
        $(".course-number").text(response['course']['number']);
        $(".course-title").text(response['course']['title']);

        $("#div-original-description").show();
        $("#original-description-teaser").show();

                    // error here
        $("#original-description").text(response['course']['original_description']).hide();

        $("#td-required-for").text(response['analysis']['cRequiredFor']);
    }
});

response is a JSON object. Could this problem be caused by invalid subscripts?

Firebug's error is:

$("#original-description").text(response.course.original_description).hide is not a function
A: 

jQuery.text(index,text) method just returns the text being set. It does not return the element.

Strelok
+3  A: 

The other answers are pointing out incorrectly - .text() returns the jQuery object. You are probably referencing an undefined property. I can replicate this:

$('<p>').text(undefined).hide()

Make sure you are referencing the right property in the JSON.

 TypeError: $("<p>").text(undefined).hide is not a function { message="$("<p>").text(undefined).hide is not a function",  more...}

If you want to query the object live you can simply do

window.o = response in your callback function and just play around with it in Firebug console.

meder
+1 nontrivial mistake
Nikita Rybak