Yes, if we're talking about something like a namespaced object (ie, you'd call this method like: foo.bar.baz()), as long as you get the object you want to spyOn as the first argument (foo.bar), you should be fine.
If you have an object foo with a method "bar" and bar returns another object where you want to spy on the method "baz" (foo.bar().baz()), you'll want to return a spy from "bar". There's a couple different ways to do this -- jasmine provides the (poorly documented) method jasmine.createSpyObj that takes (IIRC, please check the source for the exact signature) a name and an array of method names that will be mapped as spies. IE, you could:
var fakeObject = jasmine.createSpyObj("fakeObject", ['baz']);
spyOn(foo, "bar").andReturn(fakeObject);
expect(fakeObject.baz).not.toHaveBeenCalled();
foo.bar().baz();
expect(fakeObject.baz).toHaveBeenCalled();
Additionally, if you're trying to spy on a jquery chain, I would recommend spying on the $.fn you care about. IE, if you're doing something like:
$(foo).text("some-text").show();
you can
spyOn($.fn, "show")
var foo = $(".some-selector")
foo.text("some-text").show();
expect($.fn.show).toHaveBeenCalled();
expect($.fn.show.mostRecentCall.object).toEqual(foo);
Lastly, if you can *avoid* spying at all by simply triggering the behavior in question and then looking at either the DOM or the object to see that your behavior did the expected thing, you're probably best off going that route. Ideally, you're testing the results of your functions, not your implementation.
Hope that helps.
Rajan